Rumah > pangkalan data > tutorial mysql > Bagaimanakah Saya Boleh Melaksanakan Pertanyaan SQL SELECT Kedua Dengan Cekap Hanya jika Yang Pertama Tidak Mengembalikan Baris?

Bagaimanakah Saya Boleh Melaksanakan Pertanyaan SQL SELECT Kedua Dengan Cekap Hanya jika Yang Pertama Tidak Mengembalikan Baris?

Barbara Streisand
Lepaskan: 2024-12-28 02:54:10
asal
717 orang telah melayarinya

How Can I Efficiently Execute a Second SQL SELECT Query Only if the First Returns No Rows?

Melaksanakan Pertanyaan PILIH Kedua Bersyarat Berdasarkan Keputusan Pertama

Meningkatkan kecekapan skrip PHP boleh melibatkan memanfaatkan operasi pangkalan data. Satu teknik pengoptimuman melibatkan melaksanakan pertanyaan SELECT yang berbeza hanya apabila pertanyaan SELECT pertama tidak mengembalikan baris atau syarat tertentu dipenuhi.

Sebagai contoh, pertimbangkan pertanyaan berikut:

SELECT * FROM proxies WHERE (A='B')
SELECT * FROM proxies WHERE (A='C')
Salin selepas log masuk

Untuk bersyarat laksanakan pertanyaan kedua hanya jika pertanyaan pertama mengembalikan set kosong, pendekatan berikut boleh used:

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
Salin selepas log masuk

Walau bagaimanapun, pendekatan ini melibatkan menjalankan setiap pertanyaan dua kali, sekali untuk mengira dan sekali untuk mendapatkan semula data. Penyelesaian yang lebih cekap ialah menggunakan UNION ALL dengan 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'
)
Salin selepas log masuk

Pertanyaan ini mendapatkan semula baris daripada jadual proksi dengan A='B' jika ia wujud. Jika ia tidak wujud, ia mengambil baris dengan A='C'. Pendekatan ini mengurangkan bilangan panggilan pangkalan data dengan ketara, meningkatkan prestasi skrip.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Melaksanakan Pertanyaan SQL SELECT Kedua Dengan Cekap Hanya jika Yang Pertama Tidak Mengembalikan Baris?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan