Pertanyaan PILIH Bersyarat: Melaksanakan Pertanyaan Alternatif Berdasarkan Kiraan Baris
Untuk mengoptimumkan skrip PHP anda, anda sedang mencari kaedah untuk melaksanakan secara dinamik pertanyaan SELECT kedua hanya apabila pertanyaan pertama mengembalikan sifar baris. Begini cara anda boleh mencapai ini dalam MySQL:
Satu pendekatan ialah menggunakan pernyataan IF bersarang untuk membandingkan kiraan baris daripada pertanyaan pertama:
IF (SELECT COUNT(*) FROM proxies WHERE A='B') > 0 THEN SELECT * FROM proxies WHERE A='B' ELSEIF (SELECT COUNT(*) FROM proxies WHERE A='C') > 0 THEN SELECT * FROM proxies WHERE A='C' END IF
Walau bagaimanapun, kaedah ini melaksanakan setiap pertanyaan dua kali untuk setiap syarat. Untuk pengoptimuman yang lebih baik, pertimbangkan untuk menggunakan UNION ALL dengan operator EXISTS:
SELECT * FROM proxies WHERE A='B' UNION ALL SELECT * FROM proxies WHERE A='C' AND NOT EXISTS ( SELECT 1 FROM proxies WHERE A='B' )
Pertanyaan ini mula-mula akan mencari baris dengan A='B' dan mengembalikannya. Jika tiada baris dengan A='B' ditemui, ia kemudiannya akan mengambil baris dengan A='C', memastikan hanya satu pertanyaan dilaksanakan.
Demo SQL Fiddle boleh didapati di sini: [Pautan]
Pendekatan ini melaksanakan pertanyaan kedua dengan cekap hanya apabila pertanyaan pertama mengembalikan sifar baris, memberikan prestasi yang lebih baik untuk PHP anda skrip.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Melaksanakan Pertanyaan SELECT Kedua dengan Cekap dalam MySQL Hanya jika Pertanyaan Pertama Mengembalikan Baris Sifar?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!