Rumah > Soal Jawab > teks badan
Kami telah mencipta indeks khusus untuk satu pertanyaan tetapi saya mendapati pertanyaan itu mengambil masa 5 hingga 6 saat untuk dilaksanakan. Saya cuba mendapatkan indeks yang tidak digunakan menggunakan pertanyaan berikut dan saya perhatikan bahawa indeks disenaraikan dalam senarai indeks yang tidak digunakan. Sila cadangkan cara untuk mendapatkan prestasi yang lebih baik untuk pertanyaan berikut.
Pertanyaan klausa mana: WHERE parsedjobdescription IS NOT NULL AND is_updated != 0
Indeks: KEYidx_jobs_feed_parsedjobdescription_is_updated(
parsedjobdescription(700),
is_updated)
parsedjobdescription
SELECT * FROM sys.schema_unused_indexes;
parsedjobdescription varchar(50000) DEFAULT NULL is_updated tinyint(1) DEFAULT '0'
parsedjobdescription varchar(50000) DEFAULT NULL is_updated tinyint(1) DEFAULT '0'
Jelaskan pertanyaan:
Kekunci yang mungkin: idx_jobs_feed_parsedjobdescription_is_updated, idx_is_updated
Kunci: idx_jobs_feed_parsedjobdescription_is_updated
Panjang kunci: 703
Bilangan baris: 1
🎜Ditapis: 50.0🎜
P粉2327937652024-04-01 09:01:20
Tiga perkara yang perlu dielakkan menggunakan dua lajur diindeks:
IS NOT NULL - Setelah julat dicapai, lajur yang selebihnya tidak akan digunakan.
is_updated != 0 -- Ini juga merupakan "julat".
Ada masalah dengan awalan indeks.
INDEX(parsedjobdescription(700), ... -- won't get past that prefix to use anything after it.
Jika ujian itu is_updated = 1
, anda boleh flip indeks (atau tambah indeks lain):
INDEX(is_updated, parsedjobdescription(100))