首頁 > 資料庫 > mysql教程 > 只有當第一個查詢傳回零行時,如何在 MySQL 中有效率地執行第二個 SELECT 查詢?

只有當第一個查詢傳回零行時,如何在 MySQL 中有效率地執行第二個 SELECT 查詢?

Patricia Arquette
發布: 2024-12-25 07:34:33
原創
892 人瀏覽過

How Can I Efficiently Execute a Second SELECT Query in MySQL Only if the First Query Returns Zero Rows?

條件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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板