Apa perbedaan antara menggunakan INDEX vs KEY di MySQL?

193

Saya tahu cara menggunakan INDEX seperti dalam kode berikut. Dan saya tahu cara menggunakan kunci asing dan kunci primer .

CREATE TABLE tasks ( 
  task_id INT UNSIGNED NOT NULL AUTO_INCREMENT, 
  parent_id INT UNSIGNED NOT NULL DEFAULT 0, 
  task VARCHAR(100) NOT NULL, 
  date_added TIMESTAMP NOT NULL, 
  date_completed TIMESTAMP, 
  PRIMARY KEY (task_id), 
  INDEX parent (parent_id), 
  ....


Namun saya menemukan kode menggunakan KEY bukannya INDEX sebagai berikut.

...
KEY order_date (order_date) 
...


Saya tidak dapat menemukan penjelasan di halaman resmi MySQL. Adakah yang bisa memberi tahu saya apa perbedaan antara KUNCI dan INDEKS?

Satu-satunya perbedaan yang saya lihat adalah ketika saya menggunakan KEY ..., saya perlu mengulang kata, misalnya
KEY order_date (order_date).

shin
sumber

Jawaban:

264

Tidak ada perbedaan. Mereka adalah sinonim.

Dari yang CREATE TABLEentri manual :

KEYbiasanya merupakan sinonim untuk INDEX. Atribut kunci PRIMARY KEYjuga dapat ditentukan hanya KEYketika diberikan dalam definisi kolom. Ini diimplementasikan untuk kompatibilitas dengan sistem database lain.

tidak
sumber
1
Ketika melihat info tabel di versi terbaru dari SQLYog itu menunjukkan KEY keyname (column_name)ketika saya membuat tabel dengan INDEX keyname (column_name). Fakta bahwa itu adalah sinonim menjelaskannya dengan sempurna.
crmpicco
14

Berikut ini deskripsi yang bagus tentang "perbedaan":

"MySQL mengharuskan setiap Kunci juga diindeks, itu detail implementasi khusus untuk MySQL untuk meningkatkan kinerja."

Stefan
sumber
2
Pertanyaannya adalah tentang penggunaan SQL Identifiers KEY dan INDEX di MySQL. Bukan perbedaan antara kunci dan indeks.
Josh J
Saya mencari perbedaan dengan mesin pencari dan ini adalah hasil pertama. Menurut pendapat saya tidak perlu membuka pertanyaan tambahan. Tapi jangan ragu untuk melakukannya jika Anda mau.
Stefan
4

Kunci adalah bidang khusus yang memainkan peran yang sangat spesifik dalam sebuah tabel, dan jenis kunci menentukan tujuannya di dalam tabel.

Indeks adalah struktur yang disediakan RDBMS (sistem manajemen basis data) untuk meningkatkan pemrosesan data. Indeks tidak ada hubungannya dengan struktur database logis.

BEGITU...

Kunci adalah struktur logis yang Anda gunakan untuk mengidentifikasi catatan dalam tabel dan indeks adalah struktur fisik yang Anda gunakan untuk mengoptimalkan pemrosesan data.

Sumber: Desain Basis Data untuk Mere Mortal

Penulis: Michael Hernandez

JayD
sumber
1
Pertanyaannya adalah tentang penggunaan SQL Identifiers KEY dan INDEX di MySQL. Bukan perbedaan antara kunci dan indeks.
Josh J
-1

Kunci adalah sekumpulan kolom atau ekspresi tempat kami membuat indeks.

  1. Sementara indeks adalah struktur yang disimpan dalam database, kunci adalah konsep logis.

  2. Indeks membantu kami dalam cepat mengakses catatan, sedangkan kunci hanya mengidentifikasi catatan secara unik.

  3. Setiap tabel tentu memiliki kunci, tetapi memiliki indeks tidak wajib.

Periksa di https://docs.oracle.com/cd/E11882_01/server.112/e40540/indexiot.htm#CNCPT721

Atulya Anand
sumber
3
Pertanyaannya adalah tentang penggunaan SQL Identifiers KEY dan INDEX di MySQL. Bukan perbedaan antara kunci dan indeks.
Josh J
1
@ Josh J Sekalipun motivasi awalnya adalah bertanya tentang pengidentifikasi, mencari perbedaan tentang kunci dan indeks dengan mesin pencari menghasilkan topik ini. Masuk akal untuk meningkatkan judul pertanyaan agar lebih spesifik. Di sisi lain, menulis pertanyaan tentang perbedaan antara kunci dan indeks di mysql mungkin akan ditandai sebagai duplikat. => Saya menemukan jawaban pelengkap seperti itu sangat berguna. Jawaban "nyata" akan mendapatkan skor tertinggi. Jadi saya tidak melihat alasan untuk suara negatif pada jawaban yang saling melengkapi.
Stefan
Saya telah menggunakan huruf besar INDEX dan KUNCI dalam pertanyaan untuk memperjelas hal ini.
reinierpost