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.