Enjin innodb dan myisam secara automatik akan mencipta indeks untuk kunci utama atau lajur dengan atribut UNIK.
Jika anda ingin mengindeks lajur lain, anda perlu menunjukkannya secara eksplisit.
1. Cipta indeks semasa membuat jadual
CREATE TABLE 表名 ( 各个列的信息..., (KEY/INDEX) 索引名 (需要被索引的单个列或多个列) )
Perhatikan bahawa sama ada KEY atau INDEX boleh digunakan sebagai sinonim.
Contohnya, semasa membuat jadual index_demo, tambah indeks bersama untuk lajur c2 dan c3:
CREATE TABLE index_demo( c1 INT, c2 INT, c3 CHAR(1), PRIMARY KEY(c1), INDEX idx_c2_c3 (c2, c3) );
Nama indeks yang dibuat di sini ialah idx_c2_c3 Walaupun nama indeks boleh sewenang-wenangnya dinamakan, adalah disyorkan untuk menggunakan idx_ ialah awalan, diikuti dengan nama lajur indeks untuk disambung semula, dan berbilang lajur dipisahkan dengan garis bawah.
2. Tambahkan indeks semasa mengubah suai struktur jadual
ALTER TABLE 表名 ADD (KEY/INDEX) 索引名 (需要被索引的单个列或多个列);
3 Padamkan indeks apabila mengubah suai struktur jadual
ALTER TABLE 表名 DROP (KEY/INDEX) 索引名;
Sekarang padamkan indeks idx_c2_c3 yang asalnya dibina, anda boleh menulis seperti ini:
ALTER TABLE index_demo DROP INDEX idx_c2_c3;
Walaupun indeks adalah perkara yang baik, ia tidak boleh dibuat sewenang-wenangnya.
Ini sangat jelas.
Setiap kali indeks dibuat, pokok B+ mesti dibina untuknya.
Setiap nod setiap pepohon B+ ialah halaman data, yang menggunakan 16kb ruang storan secara lalai.
Pokok B+ yang besar terdiri daripada banyak halaman data.
Jadi, ini akan mengambil banyak ruang storan.
Memakan masa untuk mengekalkan jujukan
Setiap kali menambah, memadam atau mengubah suai data dalam jadual, setiap indeks pepohon B+ perlu diubah suai.
Kami tahu:
B+ Setiap tahap nod dalam pepohon membentuk senarai terpaut dua kali dalam tertib menaik bagi nilai lajur indeks.
Sama ada nod daun atau nod dalaman, rekod dalaman adalah mengikut tertib nilai lajur indeks, membentuk senarai terpaut tunggal.
Oleh itu, apabila menambah, memadam atau mengubah suai operasi, ia boleh menyebabkan kerosakan pada pengisihan nod dan rekod Kemudian enjin storan memerlukan masa tambahan untuk melaksanakan operasi seperti pembahagian halaman dan kitar semula untuk mengekalkan Pengisihan nod dan rekod.
Jika banyak indeks dicipta, anda boleh bayangkan bahawa pokok B+ yang sepadan dengan setiap indeks perlu menjalani operasi penyelenggaraan yang berkaitan, yang akan membawa banyak penggunaan.
Analisis pelan pelaksanaan yang memakan masa
Sebelum melaksanakan pernyataan pertanyaan, pelan pelaksanaan akan dijana terlebih dahulu.
Secara umumnya, pernyataan pertanyaan menggunakan paling banyak satu indeks sekunder semasa pelaksanaan Apabila menjana pelan pelaksanaan, adalah perlu untuk mengira kos menggunakan indeks yang berbeza untuk melaksanakan pertanyaan, dan akhirnya memilih indeks terendah. Pertanyaan.
Jika terlalu banyak indeks dicipta, ia mungkin mengambil masa terlalu lama untuk melaksanakan analisis kos, sekali gus menjejaskan prestasi pelaksanaan penyata pertanyaan.
Atas ialah kandungan terperinci Berapakah kos untuk mencipta, memadam dan menggunakan indeks Mysql?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!