Rumah  >  Artikel  >  pangkalan data  >  Apakah sebab mysql dalam kegagalan indeks?

Apakah sebab mysql dalam kegagalan indeks?

WBOY
WBOYke hadapan
2023-05-29 21:22:293128semak imbas

1 dalam pertanyaan

dalam pertanyaan ialah kaedah pertanyaan yang biasa digunakan dalam MySQL, yang boleh menanyakan berbilang nilai atau julat berbilang dalam satu pertanyaan. perlawanan. 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

  1. Julat pertanyaan terlalu besar

Jika julat pertanyaan data Jika terlalu besar, MySQL akan menganggapnya lebih cekap untuk mencari data melalui imbasan jadual penuh daripada menggunakan indeks. Sebagai contoh, terdapat 100,000 rekod dalam jadual, dan 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.

  1. Bilangan nilai terlalu banyak

MySQL akan menganggap bahawa imbasan jadual penuh adalah lebih cekap daripada mencari data melalui indeks . Apabila pertanyaan dalam perlu sepadan Apabila terdapat terlalu banyak nilai. 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

  1. Optimumkan pernyataan pertanyaan

Kurangkan skop dan skop pertanyaan sebanyak mungkin Bilangan nilai yang perlu dipadankan boleh dioptimumkan dengan kaedah berikut:

a Optimumkan keadaan di mana pertanyaan, gunakan DAN penyambung logik sebanyak mungkin, dan mengurangkan penggunaan penyambung logik ATAU.

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');
  1. Tambah indeks

Apabila membina jadual, menetapkan lajur untuk disoal sebagai lajur indeks boleh meningkatkan kecekapan pertanyaan. Kurangkan penggunaan dalam pertanyaan sebanyak mungkin.

Atas ialah kandungan terperinci Apakah sebab mysql dalam kegagalan indeks?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam