Apakah Anda perlu membuat indeks secara eksplisit, atau itu implisit ketika mendefinisikan kunci utama? Apakah jawabannya sama untuk MyISAM dan InnoDB?
243
Kunci utama selalu diindeks. Ini sama untuk MyISAM dan InnoDB, dan umumnya berlaku untuk semua mesin penyimpanan yang mendukung indeks.
Menurut http://dev.mysql.com/doc/refman/5.0/en/constraint-primary-key.html akan terlihat bahwa ini akan menjadi implisit
sumber
Meskipun ini ditanyakan pada tahun 2009 saya pikir saya akan mengirim referensi aktual ke dokumentasi MySQL pada kunci primer. http://dev.mysql.com/doc/refman/5.5/en/optimizing-primary-keys.html
Untuk referensi MySQL 5.0, lihat: http://dev.mysql.com/doc/refman/5.0/id/mysql-indexes.html
sumber
Kunci utama diindeks secara implisit untuk MyISAM dan InnoDB. Anda dapat memverifikasi ini dengan menggunakan EXPLAIN pada kueri yang menggunakan kunci utama.
sumber
Anda tidak harus secara eksplisit membuat indeks untuk kunci utama ... itu dilakukan secara default.
sumber
Saya kira ini jawabannya
sumber
Indeks paling baik digunakan pada kolom yang sering digunakan di mana klausa, dan dalam segala jenis penyortiran, seperti "urutan oleh". Anda mungkin bekerja pada basis data yang lebih kompleks, jadi ada baiknya mengingat beberapa aturan sederhana.
Indeks mempercepat tempat klausa dan memesan. Ingatlah untuk memikirkan BAGAIMANA data Anda akan digunakan saat membangun tabel Anda. Ada beberapa hal lain yang perlu diingat. Jika meja Anda sangat kecil, yaitu hanya beberapa karyawan, lebih buruk menggunakan indeks daripada membiarkannya keluar dan membiarkannya melakukan pemindaian tabel.
Indeks benar-benar hanya berguna dengan tabel yang memiliki banyak baris.
Satu hal yang perlu diingat, yang merupakan con dalam situasi database karyawan kami, adalah bahwa jika kolom adalah panjang variabel, indeks (dan juga sebagian besar MySQL) berkinerja jauh lebih efisien.
Jangan lupa bergabung juga! Kolom gabungan yang diindeks mempercepat.
sumber
Kunci utama selalu diindeks dan unik secara otomatis. Jadi, berhati-hatilah untuk tidak membuat indeks yang berlebihan.
Misalnya, jika Anda membuat tabel seperti itu
karena Anda ingin mengindeks kunci utama dan menerapkan batasan keunikan di atasnya, Anda sebenarnya akan membuat tiga indeks
foo
!sumber
Orang dapat menganggap kolom kunci primer sebagai kolom indeks lainnya dengan batasan kunci primer yang disertakan.
Dalam sebagian besar kasus penggunaan, kita memerlukan kunci primer, dan kolom / kolom terindeks dalam sebuah tabel, karena permintaan kita ke tabel dapat menyaring baris berdasarkan pada kolom / kolom yang bukan kunci utama, dalam hal ini kita biasanya mengindeks kolom / kolom tersebut demikian juga.
sumber