Indeks tersedia tetapi masih tidak digunakan - MySQL
P粉668019339
P粉668019339 2024-03-31 09:51:35
0
1
405

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(700),

is_updated)

SELECT * FROM sys.schema_unused_indexes;

Indeks yang tidak digunakan: PILIH * DARI sys.schema_unused_indexes;

parsedjobdescription varchar(50000) DEFAULT NULL is_updated tinyint(1) DEFAULT '0'

Lajur: 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粉668019339
P粉668019339

membalas semua(1)
P粉232793765

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))
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!