條件SELECT 查詢:根據行數執行替代查詢
為了優化PHP 腳本,您正在尋找一種動態執行的方法僅當第一個查詢傳回零行時才執行第二個SELECT 查詢。以下是在MySQL 中實現此目的的方法:
一種方法是使用巢狀IF 語句來比較第一個查詢的行數:
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
但是,此方法會執行每個查詢每個條件兩次。為了獲得更好的最佳化,請考慮將 UNION ALL 與 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' )
此查詢將首先尋找 A='B' 的行並傳回它們。如果沒有找到 A='B' 的行,它將取得 A='C' 的行,確保只執行一個查詢。
可以在此處找到SQL Fiddle 演示:[連結]
僅當第一個查詢返回零行時,此方法才能有效執行第二個查詢,從而提高PHP 腳本的性能。
以上是只有當第一個查詢傳回零行時,如何在 MySQL 中有效率地執行第二個 SELECT 查詢?的詳細內容。更多資訊請關注PHP中文網其他相關文章!