Ketika kolom integer ditandai sebagai kunci utama dalam tabel SQLite, haruskah indeks juga dibuat secara eksplisit untuknya? SQLite tampaknya tidak secara otomatis membuat indeks untuk kolom kunci utama, tetapi mungkin indeks juga, mengingat tujuannya? (Saya akan mencari di kolom itu sepanjang waktu).
Apakah situasinya akan berbeda untuk kunci primer string?
sumber
sqlite_master
tabel dengan nama yang dimulai dengansqlite_autoindex_
.UNIQUE
indeks (atauUNIQUE
batasan) pada bidang induk / referensi jika tidak ada; itu dianjurkan bahwa anak / bidang referensi (s) memiliki indeks (yang biasanya tidak akan menjadi unik): lihat di siniSQL Data Constraints
sini mengatakan: Dalam kebanyakan kasus , UNIK dan PRIMARY KEY kendala diimplementasikan dengan membuat indeks unik dalam database. (Pengecualiannya adalah INTIMER PRIMARY KEY dan PRIMARY KEYs pada TANPA tabel ROWID.). Jadi jawabannya tidak selalu benar?Jika sebuah kolom ditandai KUNCI UTAMA UTAMA, itu sebenarnya sekitar dua kali lebih cepat dari pencarian serupa yang dilakukan dengan menentukan KUNCI UTAMA lainnya atau nilai yang diindeks . Hal ini karena:
Lihat: http://www.sqlite.org/lang_createtable.html#rowid
sumber
Suatu basis data akan selalu membuat indeks untuk kunci primer unik secara diam-diam sehingga secara internal ia dapat memeriksanya unik secara efisien.
Setelah membuatnya, itu akan menggunakannya saat diperlukan.
Tentu saja, itu tidak akan selalu berkerumun, dan Anda menentukan biasanya dalam skema jika Anda menginginkannya.
sumber