Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Banyak tabel atau baris, mana yang lebih efisien dalam SQL?

Database relasional dirancang untuk menyimpan banyak baris per tabel. Ada banyak mekanisme untuk memfasilitasi tabel besar, seperti:

  • Indeks pada kombinasi bidang apa pun untuk mempercepat penelusuran
  • Cache halaman sehingga halaman yang umum digunakan tetap berada di memori
  • Partisi vertikal (database kolom) untuk mempercepat permintaan
  • Algoritme tingkat lanjut seperti hash join dan group bys (setidaknya di database selain MySQL)
  • Penggunaan beberapa prosesor dan disk untuk memproses kueri

Ada satu hal yang lebih sulit ketika menempatkan data dalam satu tabel, dan itu adalah keamanan. Dan, pada kenyataannya, dalam beberapa keadaan ini adalah perhatian utama dan pada dasarnya mengharuskan data dimasukkan ke dalam tabel terpisah. Aplikasi tersebut jarang dan jarang.

Untuk memberikan contoh betapa buruknya penyimpanan data di beberapa tabel, bayangkan bahwa di sistem Anda, Anda memiliki satu catatan per perusahaan dan Anda menyimpannya dalam sebuah tabel. Catatan ini menyimpan informasi tentang perusahaan -- seperti nama, alamat, apa pun. Panggilan adalah 100 byte informasi.

Dalam skema Anda ada tabel terpisah untuk setiap "perusahaan", jadi itu adalah satu baris per tabel. Catatan itu akan berada di satu halaman data. Halaman data bisa berukuran 16 kbyte, jadi Anda membuang sekitar 15,9 kbyte untuk menyimpan data ini. Menyimpan 1000 catatan tersebut menempati 16 Mbytes bukannya sekitar 7 halaman senilai (112 Kbytes). Itu bisa menjadi pencapaian kinerja yang signifikan.

Selain itu, dengan beberapa tabel, Anda tidak memperhitungkan tantangan dalam memelihara semua tabel dan memastikan kebenaran data di tabel yang berbeda. Pembaruan pemeliharaan perlu diterapkan ke ribuan tabel, bukan segelintir tabel.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Koneksi MySQL tidak berfungsi

  2. Menjaga kata sandi MySQL saat mengembangkan dengan Python?

  3. Tanggal PHP ('W') vs MySQL YEARWEEK (sekarang ())

  4. Pembandingan Kinerja MySQL:MySQL 5.7 vs MySQL 8.0

  5. Jalankan SQL mentah dalam migrasi