如何有效地從一個表中選擇另一表中不存在的行?

DDD
發布: 2024-10-26 11:49:29
原創
785 人瀏覽過

 How to Efficiently Select Rows from One Table that Are Not Present in Another Table?

MySQL 選擇另一個表中不存在的行

共享公共主表時取得表A 中存在但不存在於表B中的所有行鍵,有幾種方法可用,但效能影響各不相同。

使用具有NOT EXISTS 的子查詢:

使用NOT EXISTS 的子查詢的初始方法是可行的選項,但可能相對較慢,尤其是對於相對較慢,尤其是對於相對較慢較大的資料集。

使用左聯接:

如您所發現的,左聯可以執行得更快。在共用列上連接表 A 和表 B 時,表 A 中與表 B 中任何行都不匹配的行在連接列中將具有 NULL 值。過濾這些 NULL 值可以有效地隔離所需的行。

程式碼範例:

<code class="sql">SELECT *
FROM A
LEFT JOIN B ON A.x = B.y
WHERE B.y IS NULL;</code>
登入後複製

其他提示:

  • 確保兩個表格的連接欄位上有正確的索引。
  • 在表 B 上使用覆蓋索引來減少磁碟讀取次數。
  • 考慮使用負過濾器的 UNION 查詢明確排除表 B 中的行。

總體結論:

雖然左連接方法通常優於子查詢方法,但最佳解決方案可能會有所不同,具體取決於具體的數據集和模式。建議進行實驗和性能測試,以確定每種情況下最有效的方法。

以上是如何有效地從一個表中選擇另一表中不存在的行?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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