Ketika saya harus menggunakan KEY
, PRIMARY KEY
, UNIQUE KEY
dan INDEX
?
Ketika saya harus menggunakan KEY
, PRIMARY KEY
, UNIQUE KEY
dan INDEX
?
Jawaban:
KEY
dan INDEX
sinonim dalam MySQL. Mereka berarti hal yang sama. Dalam database Anda akan menggunakan indeks untuk meningkatkan kecepatan pengambilan data. Indeks biasanya dibuat pada kolom yang digunakan di JOIN
, WHERE
, dan ORDER BY
klausa.
Bayangkan Anda memiliki tabel yang dipanggil users
dan Anda ingin mencari semua pengguna yang memiliki nama belakang 'Smith'. Tanpa indeks, database harus melewati semua catatan tabel: ini lambat, karena semakin banyak catatan yang Anda miliki di database Anda, semakin banyak pekerjaan yang harus dilakukan untuk menemukan hasilnya. Di sisi lain, indeks akan membantu database melompati cepat ke halaman yang relevan di mana catatan 'Smith' disimpan. Ini sangat mirip dengan cara kita, manusia, menelusuri direktori buku telepon untuk menemukan seseorang dengan nama belakang: Kami tidak mulai mencari-cari di direktori dari awal hingga akhir, selama kami memasukkan informasi dalam urutan tertentu sehingga kami dapat gunakan untuk melompat dengan cepat ke halaman 'S'.
Kunci primer dan kunci unik serupa. Kunci utama adalah kolom, atau kombinasi kolom, yang dapat mengidentifikasi baris secara unik. Ini adalah kasus khusus kunci unik . Sebuah tabel dapat memiliki paling banyak satu kunci utama, tetapi lebih dari satu kunci unik. Saat Anda menentukan kunci unik pada kolom, tidak ada dua baris berbeda dalam tabel yang dapat memiliki nilai yang sama.
Perhatikan juga bahwa kolom yang didefinisikan sebagai kunci primer atau kunci unik secara otomatis diindeks di MySQL.
passengers
dengan bidang-bidang berikut :, (id, first_name, last_name, age, passport_number)
Anda biasanya mengatur id
kolom untuk menjadi kunci utama. Kunci utama secara otomatis adalah kunci unik. Perbedaan utama adalah bahwa Anda hanya dapat memiliki satu kunci utama pada tabel, dan bahwa kolom tidak dapat berisi NULL
nilai. Tidak perlu untuk mengatur id
kolom menjadi UNIQUE
karena dengan pengaturan untuk kunci utama, itu otomatis dijamin akan unik ... Kemudian Anda juga bisa mengatur passport_number
untuk UNIQUE
agar tidak lebih dari satu penumpang ...
NULL
di kolom itu, tanpa masalah.
KEY dan INDEX adalah sinonim.
Anda harus menambahkan indeks ketika pengukuran kinerja dan MENJELASKAN menunjukkan kepada Anda bahwa kueri tidak efisien karena indeks yang hilang. Menambahkan indeks dapat meningkatkan kinerja kueri (tetapi dapat memperlambat modifikasi ke tabel).
Anda harus menggunakan UNIQUE ketika Anda ingin membatasi nilai dalam kolom (atau kolom) agar menjadi unik, sehingga upaya untuk memasukkan nilai duplikat menghasilkan kesalahan.
KUNCI UTAMA keduanya merupakan kendala unik dan juga menyiratkan bahwa kolom BUKAN NULL. Ini digunakan untuk memberikan identitas pada setiap baris. Ini dapat berguna untuk bergabung dengan tabel lain melalui batasan kunci asing. Meskipun tidak diperlukan untuk sebuah tabel untuk memiliki KUNCI UTAMA, biasanya merupakan ide yang bagus.
Kunci primer tidak memungkinkan NULL
nilai, tetapi kunci unik memungkinkan NULL
nilai.
Kami hanya dapat mendeklarasikan satu kunci utama dalam sebuah tabel, tetapi sebuah tabel dapat memiliki beberapa kunci unik (penetapan kolom).
PRIMARY KEY
DAN UNIQUE KEY
serupa kecuali memiliki fungsi yang berbeda. Kunci utama membuat baris tabel unik (yaitu, tidak ada 2 baris dengan kunci yang sama persis). Anda hanya dapat memiliki 1 kunci utama dalam tabel database.
Kunci unik membuat kolom tabel dalam baris tabel menjadi unik (yaitu, tidak ada 2 baris tabel yang memiliki nilai persis sama). Anda dapat memiliki lebih dari 1 kolom tabel kunci unik (tidak seperti kunci primer yang berarti hanya 1 kolom tabel dalam tabel ini unik).
INDEX
juga menciptakan keunikan. MySQL (contoh) akan membuat tabel pengindeksan untuk kolom yang diindeks. Dengan cara ini, lebih mudah untuk mengambil nilai baris tabel ketika kueri ditanya pada kolom tabel yang diindeks. Kerugiannya adalah jika Anda melakukan banyak pembaruan / penghapusan / pembuatan, MySQL harus mengelola tabel pengindeksan (dan itu bisa menjadi hambatan kinerja).
Semoga ini membantu.
UNIQUE KEY
bisa NULL
tetapi PRIMARY KEY
tidak bisa NULL
.
Tombol Unik: Kolom di mana tidak ada dua baris yang serupa
Kunci Utama: Kumpulan jumlah minimum kolom yang secara unik dapat mengidentifikasi setiap baris dalam sebuah tabel (yaitu tidak ada dua baris yang sama di semua kolom yang merupakan kunci utama). Mungkin ada lebih dari satu kunci utama dalam sebuah tabel. Jika ada kunci unik maka itu adalah kunci primer (bukan "kunci utama") dalam tabel. Jika tidak ada kunci unik maka lebih dari satu nilai kolom akan diperlukan untuk mengidentifikasi baris seperti (first_name, last_name, father_name, mother_name) dapat di beberapa tabel merupakan kunci utama.
Indeks: digunakan untuk mengoptimalkan kueri. Jika Anda akan mencari atau mengurutkan hasil berdasarkan beberapa kolom berkali-kali (mis. Kebanyakan orang akan mencari siswa berdasarkan nama dan bukan dengan nomor roll mereka.) Maka dapat dioptimalkan jika nilai kolom semua " diindeks "misalnya dengan algoritma pohon biner.
Kunci primer - kita hanya bisa menempatkan satu kunci utama pada tabel ke dalam tabel dan kita tidak bisa membiarkan kolom itu kosong ketika kita memasukkan nilai ke dalam tabel.
Kunci Unik - kita dapat meletakkan lebih dari satu kunci unik di atas sebuah tabel dan kita dapat membiarkan kolom itu kosong ketika kita memasukkan nilai-nilai ke dalam tabel. kolom mengambil nilai unik (tidak sama) ketika kami menerapkan kunci primer & unik.
Kunci utama digunakan untuk bekerja dengan tabel yang berbeda. Ini adalah dasar dari basis data relasional. Jika Anda memiliki database buku, lebih baik membuat 2 tabel - 1) buku dan 2) penulis dengan kunci utama "id" INT. Kemudian Anda menggunakan id di buku, bukan nama penulis.
Kunci unik digunakan jika Anda tidak ingin entri berulang. Misalnya Anda mungkin memiliki judul di tabel buku Anda dan ingin memastikan hanya ada satu entri untuk setiap judul.
Kunci unik:
Kunci utama