indeks MySQL
Indeks MySQL
Penubuhan indeks MySQL adalah sangat penting untuk pengendalian MySQL yang cekap kepantasan.
Sebagai contoh, jika MySQL yang direka bentuk dengan betul dan menggunakan indeks adalah Lamborghini, maka MySQL yang tidak direka bentuk dan menggunakan indeks ialah basikal roda tiga manusia.
Indeks dibahagikan kepada indeks lajur tunggal dan indeks gabungan. Indeks satu lajur bermakna indeks hanya mengandungi satu lajur Satu jadual boleh mempunyai berbilang indeks lajur tunggal, tetapi ini bukan indeks gabungan. Indeks gabungan, iaitu, indeks mengandungi berbilang lajur.
Apabila mencipta indeks, anda perlu memastikan bahawa indeks ialah syarat yang digunakan pada pernyataan pertanyaan SQL (biasanya sebagai syarat klausa WHERE).
Malah, indeks juga merupakan jadual, yang menyimpan kunci utama dan medan indeks dan menunjuk kepada rekod jadual entiti.
Semua perkara di atas bercakap tentang faedah menggunakan indeks, tetapi penggunaan indeks yang berlebihan akan menyebabkan penyalahgunaan. Oleh itu, indeks juga akan mempunyai kekurangannya: walaupun indeks sangat meningkatkan kelajuan pertanyaan, ia juga akan mengurangkan kelajuan mengemas kini jadual, seperti INSERT, UPDATE dan DELETE pada jadual. Kerana semasa mengemas kini jadual, MySQL bukan sahaja perlu menyimpan data, tetapi juga menyimpan fail indeks.
Mencipta fail indeks akan menduduki ruang cakera.
Indeks biasa
Buat indeks
Ini adalah indeks yang paling asas, ia tidak mempunyai sekatan. Ia mempunyai kaedah penciptaan berikut:
CREATE INDEX indexName ON mytable(username(length));Jika CHAR, jenis VARCHAR, panjang boleh kurang daripada panjang sebenar medan jika ia adalah jenis BLOB dan TEXT, panjang mesti dinyatakan.
Ubah suai struktur jadual
ALTER mytable ADD INDEX [indexName] ON (username(length))menentukan secara langsung semasa membuat jadual
CREATE TABLE mytable( ID INT NOT NULL, username VARCHAR(16) NOT NULL, INDEX [indexName] (username(length)) );sintaks untuk memadam indeks
DROP INDEX [indexName] ON mytable;
Indeks unik
Ia serupa dengan indeks biasa sebelumnya, kecuali nilai lajur indeks mestilah unik, tetapi nilai nol dibenarkan. Dalam kes indeks komposit, gabungan nilai lajur mestilah unik. Ia mempunyai kaedah penciptaan berikut:
Buat indeks
CREATE UNIQUE INDEX indexName ON mytable(username(length))Ubah suai struktur jadual
ALTER mytable ADD UNIQUE [indexName] ON (username(length))Nyatakan terus
CREATE TABLE mytable( ID INT NOT NULL, username VARCHAR(16) NOT NULL, UNIQUE [indexName] (username(length)) );
Gunakan arahan ALTER untuk menambah dan memadam indeks
Terdapat empat cara untuk menambah indeks pada jadual data:
ALTER JADUAL tbl_name ADD PRIMER KEY (column_list ): Pernyataan ini menambah kunci utama, yang bermaksud bahawa nilai indeks mestilah unik dan tidak boleh NULL.
UBAH JADUAL tbl_nama TAMBAH nama indeks UNIK (senarai_lajur): Nilai indeks yang dicipta oleh pernyataan ini mestilah unik (kecuali NULL, NULL mungkin muncul beberapa kali ).
UBAH JADUAL tbl_nama TAMBAH nama indeks INDEX (senarai_lajur): Tambah indeks biasa, nilai indeks boleh muncul berbilang kali.
UBAH JADUAL tbl_name TAMBAH FULLTEXT index_name (column_list):Pernyataan ini menentukan indeks sebagai FULLTEXT untuk pengindeksan teks penuh.
Contoh berikut ialah menambah indeks pada jadual.
mysql> ALTER TABLE testalter_tbl ADD INDEX (c);Anda juga boleh menggunakan klausa DROP dalam arahan ALTER untuk menggugurkan indeks. Cuba contoh berikut untuk memadamkan indeks:
mysql> ALTER TABLE testalter_tbl DROP INDEX (c)
Gunakan arahan ALTER untuk menambah dan memadam kunci utama
Kekunci utama kunci hanya boleh bertindak pada satu lajur Apabila menambah indeks kunci utama, anda perlu memastikan bahawa kunci utama TIDAK NULL secara lalai. Contohnya adalah seperti berikut:
mysql> ALTER TABLE testalter_tbl MODIFY i INT NOT NULL; mysql> ALTER TABLE testalter_tbl ADD PRIMARY KEY (i);Anda juga boleh menggunakan arahan ALTER untuk memadam kunci utama:
mysql> ALTER TABLE testalter_tbl DROP PRIMARY KEY;Anda hanya perlu menentukan KUNCI PRIMER apabila memadam, tetapi apabila memadam indeks, Anda mesti tahu nama indeks.
Tunjukkan maklumat indeks
Anda boleh menggunakan arahan SHOW INDEX untuk menyenaraikan maklumat indeks yang berkaitan dalam jadual. Maklumat output boleh diformatkan dengan menambah G.
Cuba contoh berikut:
mysql> SHOW INDEX FROM table_name\G ........
Cadangan tutorial video berkaitan: