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

Apakah ada alasan untuk khawatir tentang urutan kolom dalam tabel?

Urutan kolom memiliki dampak kinerja yang besar pada beberapa database yang telah saya setel, mencakup Sql Server, Oracle, dan MySQL. Postingan ini memiliki aturan praktis yang baik :

  • Kolom kunci utama terlebih dahulu
  • Kolom kunci asing berikutnya.
  • Kolom yang sering dicari selanjutnya
  • Kolom yang sering diperbarui nanti
  • Kolom yang tidak dapat dibatalkan terakhir.
  • Kolom nullable paling sedikit digunakan setelah kolom nullable lebih sering digunakan

Contoh untuk perbedaan kinerja adalah pencarian Indeks. Mesin database menemukan baris berdasarkan beberapa kondisi dalam indeks, dan mendapatkan kembali alamat baris. Sekarang katakan Anda mencari SomeValue, dan itu ada di tabel ini:

 SomeId int,
 SomeString varchar(100),
 SomeValue int

Mesin harus menebak di mana SomeValue dimulai, karena SomeString memiliki panjang yang tidak diketahui. Namun, jika Anda mengubah urutannya menjadi:

 SomeId int,
 SomeValue int,
 SomeString varchar(100)

Sekarang mesin tahu bahwa SomeValue dapat ditemukan 4 byte setelah awal baris. Jadi urutan kolom dapat memiliki dampak kinerja yang cukup besar.

EDIT:Sql Server 2005 menyimpan bidang dengan panjang tetap di awal baris. Dan setiap baris memiliki referensi ke awal varchar. Ini sepenuhnya meniadakan efek yang saya sebutkan di atas. Jadi untuk database terbaru, urutan kolom tidak lagi berpengaruh.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana TIDAK REGEXP Bekerja di MySQL

  2. Cara Mengaktifkan Log Permintaan Lambat MySQL di MySQL

  3. Bagaimana saya bisa menggunakan objek PDO dengan benar untuk kueri SELECT berparameter?

  4. Bisakah MySQL mengganti banyak karakter?

  5. MySQL INSERT IF (pernyataan if khusus)