Apakah sebab mysql dalam kegagalan indeks?

WBOY
Lepaskan: 2023-05-29 21:22:29
ke hadapan
3121 orang telah melayarinya

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);
Salin selepas log masuk

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');
Salin selepas log masuk
  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!

Label berkaitan:
sumber:yisu.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan