Situasi biasa: 1. Menggunakan fungsi atau operasi 2. Penukaran jenis tersirat 3. Menggunakan tidak sama dengan (!= atau <>); ; 6. Nilai NULL;
Indeks dalam MySQL ialah alat penting untuk membantu mengoptimumkan prestasi pertanyaan, tetapi dalam beberapa kes, indeks mungkin tidak berfungsi seperti yang diharapkan, iaitu indeks "keluar".
Berikut ialah beberapa situasi biasa yang menyebabkan indeks MySQL gagal:
: Apabila fungsi digunakan atau operasi dilakukan pada lajur diindeks, indeks biasanya tidak berkuat kuasa. Contohnya:
SELECT * FROM users WHERE YEAR(date_column) = 2023;
Di sini, YEAR(tarikh_lajur) menjadikan indeks tidak sah.
2. Penukaran jenis tersirat: Apabila penukaran jenis tersirat terlibat dalam syarat pertanyaan, indeks mungkin tidak digunakan. Contohnya, jika lajur daripada jenis rentetan tetapi disoal menggunakan nombor, atau sebaliknya.
SELECT * FROM users WHERE id = '123'; -- 假设id是整数类型
Gunakan Not Equals (!= atau <>): Menggunakan operator Not Equals biasanya menyebabkan kegagalan indeks kerana ia memerlukan pengimbasan berbilang nilai indeks.
SELECT * FROM users WHERE age != 25;
Gunakan operator LIKE dan mulakan dengan wildcard: Apabila operator LIKE digunakan dan corak bermula dengan wildcard %, indeks biasanya tidak akan berkuat kuasa.
SELECT * FROM users WHERE name LIKE '%Smith%';
OR syarat: Apabila menggunakan syarat ATAU, jika semua lajur yang terlibat tidak diindeks, atau salah satu syarat menyebabkan kegagalan indeks, maka keseluruhan pertanyaan mungkin tidak menggunakan indeks.
SELECT * FROM users WHERE age = 25 OR name = 'John';
NULL值:如果索引列包含NULL值,并且查询条件涉及到NULL,索引可能不会生效。
SELECT * FROM users WHERE age IS NULL;
为了避免索引失效,建议:
Atas ialah kandungan terperinci Beberapa situasi kegagalan indeks mysql. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!