Rumah  >  Soal Jawab  >  teks badan

Indeks tersedia tetapi masih tidak digunakan - MySQL

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粉668019339P粉668019339184 hari yang lalu366

membalas semua(1)saya akan balas

  • P粉232793765

    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))

    balas
    0
  • Batalbalas