Tutorial MySQL ini menjelaskan cara membuat, menjatuhkan, dan mengganti nama INDEXES di MySQL dengan sintaks dan contoh.
Penjelasan
Apa itu INDEXES pada MySQL? Indeks adalah metode penyesuaian kinerja yang memungkinkan pengambilan catatan yang lebih cepat. Indeks membuat entri untuk setiap nilai yang muncul di kolom yang diindeks.
Membuat INDEXES pada MySQL
Ada 2 cara untuk membuat INDEXES pada MySQL. Teman-teman dapat membuat indeks saat pertama kali membuat tabel menggunakan pernyataan CREATE TABLE atau teman-teman dapat menggunakan pernyataan CREATE INDEX setelah tabel dibuat.
Syntax
Sintaks untuk membuat membuat INDEXES pada MySQL menggunakan pernyataan CREATE TABLE di MySQL adalah:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
CREATE TABLE table_name ( column1 datatype [ NULL | NOT NULL ], column2 datatype [ NULL | NOT NULL ], ... column_n datatype [ NULL | NOT NULL ], INDEX index_name [ USING BTREE | HASH ] (index_col1 [(length)] [ASC | DESC], index_col2 [(length)] [ASC | DESC], ... index_col_n [(length)] [ASC | DESC]) ); |
ATAU
Sintaks untuk membuat INDEXES pada MySQL menggunakan pernyataan CREATE INDEX di MySQL adalah:
|
1 2 3 4 5 6 7 |
CREATE [UNIQUE | FULLTEXT | SPATIAL] INDEX index_name [ USING BTREE | HASH ] ON table_name (index_col1 [(length)] [ASC | DESC], index_col2 [(length)] [ASC | DESC], ... index_col_n [(length)] [ASC | DESC]); |
Penjelasan Parameter
- UNIQUE
- Pilihan. Pengubah UNIQUE menunjukkan bahwa kombinasi nilai dalam kolom yang diindeks harus unik.
- FULLTEXT
- Pilihan. Pengubah FULLTEXT mengindeks seluruh kolom dan tidak memungkinkan awalan. Tabel InnoDB dan MyISAM mendukung opsi ini.
- SPATIAL
- Pilihan. Pengubah SPATIAL mengindeks seluruh kolom dan tidak mengijinkan kolom yang diindeks mengandung nilai NULL. InnoDB (mulai dari MySQL 5.7) dan tabel MyISAM mendukung opsi ini.
- index_name
- Nama untuk ditetapkan ke indeks.
- table_name
- Nama tabel untuk membuat indeks.
- index_col1, index_col2, … index_col_n
- Kolom yang digunakan dalam indeks.
- length
- Pilihan. Jika ditentukan, hanya awalan kolom yang diindeks bukan seluruh kolom. Untuk kolom string non-biner, nilai ini adalah jumlah karakter yang ditentukan dari kolom untuk diindeks. Untuk kolom string biner, nilai ini adalah jumlah byte yang diberikan kolom untuk mengindeks.
- ASC
- Pilihan. Indeks diurutkan dalam urutan menaik untuk kolom itu.
- DESC
- Pilihan. Indeks diurutkan dalam urutan menurun untuk kolom itu.
Contoh
Mari kita lihat contoh bagaimana membuat INDEXES pada MySQL menggunakan pernyataan CREATE TABLE. Pernyataan ini akan membuat tabel sekaligus INDEXES pada saat yang sama.
Sebagai contoh:
|
1 2 3 4 5 6 7 8 |
CREATE TABLE contacts ( contact_id INT(11) NOT NULL AUTO_INCREMENT, last_name VARCHAR(30) NOT NULL, first_name VARCHAR(25), birthday DATE, CONSTRAINT contacts_pk PRIMARY KEY (contact_id), INDEX contacts_idx (last_name, first_name) ); |
Dalam contoh ini, kami telah membuat tabel kontak serta indeks yang disebut contacts_idx yang terdiri dari kolom last_name dan first_name.
Selanjutnya, kami akan menunjukkan cara membuat tabel terlebih dahulu dan kemudian membuat indeks menggunakan pernyataan CREATE INDEX.
Sebagai contoh:
|
1 2 3 4 5 6 7 8 9 10 |
CREATE TABLE contacts ( contact_id INT(11) NOT NULL AUTO_INCREMENT, last_name VARCHAR(30) NOT NULL, first_name VARCHAR(25), birthday DATE, CONSTRAINT contacts_pk PRIMARY KEY (contact_id) ); CREATE INDEX contacts_idx ON contacts (last_name, first_name); |
Dalam contoh ini, pernyataan CREATE TABLE akan membuat tabel kontak. Pernyataan CREATE INDEX akan membuat INDEXES pada MySQL yang disebut contacts_idx yang terdiri dari bidang last_name dan first_name.
Indeks Unik
Untuk membuat INDEXES pada MySQL unik di atas meja, Teman-teman perlu menentukan kata kunci UNIQUE saat membuat indeks. Sekali lagi, ini bisa dilakukan dengan pernyataan CREATE TABLE atau pernyataan CREATE INDEX.
Sebagai contoh:
|
1 2 3 4 5 6 7 8 |
CREATE TABLE contacts ( contact_id INT(11) NOT NULL AUTO_INCREMENT, last_name VARCHAR(30) NOT NULL, first_name VARCHAR(25), birthday DATE, CONSTRAINT contacts_pk PRIMARY KEY (contact_id), UNIQUE INDEX contacts_idx (last_name, first_name) ); |
Kedua contoh ini akan membuat INDEXES pada MySQL unik pada bidang last_name dan first_name sehingga kombinasi bidang-bidang ini harus selalu mengandung nilai unik tanpa duplikat. Ini adalah cara yang bagus untuk menegakkan integritas dalam database Anda jika Anda memerlukan nilai unik di kolom yang bukan bagian dari kunci utama Anda.