Rumah >pangkalan data >tutorial mysql >Indeks Penutup, Komposit atau Lajur: Indeks MySQL Mana Yang Perlu Saya Gunakan?
Memahami pelbagai jenis indeks boleh meningkatkan prestasi pertanyaan MySQL anda dengan ketara. Dalam artikel ini, kami akan menyelidiki indeks penutup, komposit dan lajur serta menjawab soalan lazim mengenai penggunaannya.
A indeks penutup termasuk semua lajur yang diambil oleh pertanyaan, tidak termasuk lajur yang digunakan dalam klausa WHERE. Ia membenarkan enjin pertanyaan untuk mendapatkan semula data yang diperlukan terus daripada indeks tanpa mengakses data jadual. Sebaliknya, indeks lajur dibuat pada satu lajur.
A indeks komposit dibuat pada berbilang lajur. Susunan lajur dalam definisi indeks adalah penting kerana hanya bahagian paling kiri indeks komposit boleh digunakan untuk pengindeksan. Jika indeks komposit ditakrifkan sebagai (col3, col4) dan pertanyaan hanya menggunakan col3 dalam klausa WHERE, hanya sebahagian daripada indeks komposit akan digunakan.
MySQL lazimnya memilih indeks dengan kardinaliti tertinggi untuk pertanyaan tertentu. Dalam keadaan di mana indeks berasingan wujud pada lajur yang berbeza, indeks yang mempunyai nilai yang lebih berbeza akan diutamakan. Secara amnya tidak boleh menggunakan berbilang indeks untuk jadual yang sama dalam satu pertanyaan. Walau bagaimanapun, subkueri atau indeks kompaun boleh digunakan sebagai penyelesaian.
Menggunakan indeks penutup boleh meningkatkan prestasi dengan ketara dengan menghapuskan keperluan untuk mengakses data jadual. Walau bagaimanapun, mencipta terlalu banyak indeks penutup boleh membawa kepada kemerosotan indeks dan kemerosotan prestasi. Indeks kompaun biasanya lebih cekap daripada indeks lajur apabila berbilang lajur terlibat dalam pertanyaan.
Tingkah laku indeks berbeza sedikit antara enjin storan MyISAM dan InnoDB. Dalam InnoDB, kunci utama disertakan secara tersirat dalam semua indeks sekunder, menjadikannya indeks gabungan dengan berkesan. Akibatnya, InnoDB menggunakan indeks penutup dengan cekap walaupun kunci utama tidak digunakan secara eksplisit dalam klausa WHERE. MyISAM pula tidak mempunyai perangai begini.
Atas ialah kandungan terperinci Indeks Penutup, Komposit atau Lajur: Indeks MySQL Mana Yang Perlu Saya Gunakan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!