Perlahan "IN" Pertanyaan dengan Subquery dalam MySQL
Pertanyaan MySQL menggunakan operator "IN" boleh menunjukkan penurunan prestasi yang ketara apabila subquery digunakan untuk mendapatkan semula nilai bagi klausa "IN" adalah rumit. Dalam kes sedemikian, menggantikan hasil subkueri dengan nilai eksplisit menghasilkan peningkatan ketara dalam masa pelaksanaan.
Untuk memahami punca gelagat ini, adalah penting untuk ambil perhatian bahawa MySQL melaksanakan subkueri setiap kali pertanyaan "IN" dinilai . Dalam contoh yang diberikan, terdapat 7 juta baris dalam jadual em_link_data, setiap satunya diproses secara berasingan, menghasilkan banyak penilaian subkueri.
Menggantikan subkueri dengan nilai eksplisit, sebaliknya, menghapuskan keperluan untuk pelaksanaan subkueri berulang, menghasilkan peningkatan prestasi yang ketara. Kelebihan prestasi yang serupa boleh dicapai dengan menggunakan JOIN dan bukannya subkueri "IN", seterusnya mengoptimumkan proses pelaksanaan.
Malangnya, pengguna tidak dapat mengubah suai pertanyaan disebabkan oleh pengehadan perisian. Dalam kes sedemikian, kaedah alternatif perlu disiasat untuk meningkatkan prestasi, seperti mengoptimumkan jadual yang terlibat dengan mencipta indeks yang sesuai atau meneroka cara untuk mengurangkan bilangan baris yang diproses oleh pertanyaan.
Atas ialah kandungan terperinci Mengapakah Pertanyaan \'IN\' dengan Subkueri dalam MySQL Lambat dan Bagaimana Saya Boleh Meningkatkan Prestasi?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!