Rumah >pangkalan data >tutorial mysql >Bagaimana Menggunakan Berbilang Lajur dengan Cekap dalam Klausa WHERE IN MySQL dengan Indeks?
MySQL Pelbagai Lajur dalam Klausa IN
Masalah:
Anda mempunyai jadual pangkalan data dengan empat lajur yang mewakili koordinat geografi: x0, y0, x1, dan y1. Anda mempunyai indeks pada lajur ini dalam susunan x0, y0, x1, y1. Anda ingin menanyakan jadual dengan cekap menggunakan senarai pasangan koordinat dalam klausa WHERE IN.
Penyelesaian:
Untuk menggunakan indeks dengan berkesan, tulis semula predikat IN sebagai satu siri keadaan ATAU, di mana setiap syarat membandingkan koordinat baris semasa dengan pasangan koordinat dalam senarai.
Contoh:
Daripada:
(x0, y0, x1, y1) IN ((4, 3, 5, 6), (9, 3, 2, 1))
Gunakan:
( ( x0 = 4 AND y0 = 3 AND x1 = 5 AND y1 = 6 ) OR ( x0 = 9 AND y0 = 3 AND x1 = 2 AND y1 = 1 ) )
Pengoptimuman dalam Versi MySQL yang lebih baharu:
Dalam versi MySQL yang lebih baharu, pengoptimum telah bertambah baik untuk menggunakan indeks dengan lebih baik dalam pertanyaan sedemikian. Sintaks:
(a,b) IN ((7,43),(7,44),(8,1))
telah disokong sejak sekian lama, tetapi isu prestasi wujud sebelum ini. Pengoptimum yang lebih baharu kini menjana pelan pelaksanaan yang lebih cekap.
Nota:
Pengoptimuman yang serupa digunakan pada OR binaan dalam klausa WHERE. Untuk kecekapan yang lebih baik, pertimbangkan untuk menggunakan:
WHERE ( seq >= 7 ) AND ( seq > 7 OR sub > 42 )
bukannya:
WHERE ( seq > 7 ) OR ( seq = 7 AND sub > 42 )
Atas ialah kandungan terperinci Bagaimana Menggunakan Berbilang Lajur dengan Cekap dalam Klausa WHERE IN MySQL dengan Indeks?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!