Apabila bekerja dengan pangkalan data yang mengandungi koordinat geografi merentas lajur yang berbeza, menanya data dengan cekap berdasarkan senarai koordinat boleh menjadi penting. Dalam kes ini, kami mempunyai jadual dengan empat lajur: x0, y0, x1, dan y1, setiap satu mewakili kedudukan geografi tertentu. Jadual diindeks berdasarkan empat lajur ini dalam jujukan x0, y0, x1, y1.
Untuk menanyakan data sedemikian, menggunakan klausa IN dengan berbilang lajur boleh memberi manfaat. Walau bagaimanapun, MySQL mempunyai had tertentu apabila menggunakan sintaks (a, b) IN ((...), (...)) secara langsung.
Menulis semula Predikat IN untuk Kecekapan Maksimum :
Untuk mengatasi batasan ini dan memanfaatkan indeks sedia ada, kita boleh menulis semula predikat IN sebagai satu siri keadaan ATAU. Setiap syarat menyemak sama ada nilai empat lajur sepadan dengan satu daripada pasangan koordinat yang ditentukan:
( (x0 = 4 AND y0 = 3 AND x1 = 5 AND y1 = 6) OR (x0 = 9 AND y0 = 3 AND x1 = 2 AND y1 = 1) )
Dengan menggunakan pendekatan ini, MySQL boleh menggunakan indeks pada lajur dengan berkesan dan melaksanakan pertanyaan dengan cekap.
Pengoptimuman dalam Versi Baharu MySQL:
Perhatikan bahawa versi MySQL yang lebih baharu telah menangani isu prestasi yang dikaitkan dengan penggunaan klausa IN dengan berbilang lajur. Pengoptimum dalam versi ini telah dipertingkatkan untuk menjana pelan pelaksanaan yang lebih cekap.
Khususnya, sintaks (a, b) IN ((...), (...)) kini disokong dalam MySQL , dan pengoptimum boleh menjana rancangan yang memanfaatkan indeks yang tersedia. Ini menghapuskan keperluan untuk menulis semula manual predikat IN seperti yang diterangkan di atas.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menyoal Berbilang Lajur dengan Cekap dengan Klausa IN dalam MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!