MySQL ialah sistem pengurusan pangkalan data hubungan yang biasa digunakan, dan indeks adalah penting untuk mengoptimumkan prestasi pertanyaan pangkalan data. Walau bagaimanapun, kadangkala didapati bahawa walaupun indeks dibina, pertanyaan masih sangat perlahan Pada masa ini, adalah perlu untuk mempertimbangkan punca kegagalan indeks dan melakukan pengoptimuman yang sepadan. Antaranya, dalam pertanyaan mungkin merupakan salah satu punca biasa kegagalan indeks.
1. Dalam pertanyaan
In query ialah kaedah pertanyaan yang biasa digunakan dalam MySQL, yang boleh memadankan berbilang nilai atau berbilang julat dalam satu pertanyaan. Contohnya:
SELECT * FROM table WHERE col1 IN (1,2,3);
Pernyataan SQL ini akan mencari semua baris dengan lajur col1 bersamaan dengan 1, 2 atau 3. Semasa pemprosesan pertanyaan dalam, MySQL akan membandingkan setiap nilai dalam kurungan dengan indeks, jadi pertanyaan dalam akan memberi kesan tertentu terhadap kecekapan indeks.
2. Sebab kegagalan indeks
Apabila julat pertanyaan terlalu besar, MySQL akan mempertimbangkan jadual penuh nisbah imbasan untuk dilalui Indeks lebih cekap untuk mencari data. Sebagai contoh, terdapat 100,000 rekod dalam jadual Jika julat pertanyaan melebihi lebih daripada 25% daripada rekod, MySQL akan memilih imbasan jadual penuh dan bukannya menggunakan indeks untuk pertanyaan. Oleh itu, jika julat pertanyaan terlalu besar, ia boleh menyebabkan kegagalan indeks.
Dalam pertanyaan dalam, jika terdapat terlalu banyak nilai untuk dipadankan, MySQL akan berfikir bahawa imbasan jadual penuh adalah lebih mahal daripada mencari data melalui indeks Untuk menjadi cekap. Pada masa ini, maksud pengindeksan tidak hebat. Oleh itu, apabila menggunakan dalam pertanyaan, anda harus cuba mengurangkan bilangan nilai padanan sebanyak mungkin.
3. Kaedah Pengoptimuman
Kurangkan skop pertanyaan dan bilangan nilai yang perlu dipadankan sebanyak mungkin. Anda boleh menggunakan kaedah berikut untuk mengoptimumkan pernyataan pertanyaan:
a. .
b. Gunakan pertanyaan julat dan bukannya dalam pertanyaan. Contohnya, gunakan operator ANTARA dan DAN bukannya IN.
c. Kurangkan senarai nilai dalam pertanyaan sebanyak mungkin dan gunakan subkueri untuk mengoptimumkannya. Contohnya:
SELECT * FROM table WHERE col1 IN (SELECT col1 FROM table WHERE col2='xxx');
Apabila membina jadual, tetapkan lajur yang perlu disoal sebagai lajur indeks, yang boleh meningkatkan kecekapan pertanyaan dan kurangkan bilangan dalam pertanyaan sebanyak mungkin penggunaan.
4. Ringkasan
Indeks ialah bahagian yang sangat penting dalam pengoptimuman pertanyaan MySQL, tetapi apabila dalam pertanyaan digunakan secara meluas, kegagalan indeks mungkin berlaku. Dengan mengoptimumkan pernyataan pertanyaan dan menggunakan indeks yang betul, masalah kegagalan indeks boleh dielakkan dan dikurangkan ke tahap yang paling besar. Perlu dinyatakan bahawa kesan indeks juga dipengaruhi oleh banyak faktor lain, seperti saiz jadual, jenis medan, kaedah pengisihan, dll. Oleh itu, dalam pengoptimuman pertanyaan sebenar, pengoptimuman yang munasabah perlu dijalankan mengikut situasi tertentu. .
Atas ialah kandungan terperinci mysql dalam kegagalan indeks. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!