哪一種 SQL 查詢比較快:Join Criteria 還是Where Clause?
這題比較了兩種查詢結構的效能:對 join 進行過濾標準與使用 WHERE 子句的比較。常見的假設是,根據連接條件進行過濾會更快,因為它會更早地減少結果集,但這種信念可能並不總是成立。
查詢比較
讓我們檢查兩個具有相同結構(過濾器放置除外)的查詢:
查詢1(Join>查詢1(Join上的過濾器)標準)
SELECT * FROM TableA a INNER JOIN TableXRef x ON a.ID = x.TableAID INNER JOIN TableB b ON x.TableBID = b.ID WHERE a.ID = 1;
查詢2(在 WHERE 子句中過濾)
SELECT * FROM TableA a INNER JOIN TableXRef x ON a.ID = x.TableAID INNER JOIN TableB b ON x.TableBID = b.ID AND a.ID = 1;
效能測試
為了確定哪個查詢更快,進行了效能測試。結果表明,WHERE 子句的過濾速度比使用連接條件的過濾速度稍快。經過的時間差很小:
- WHERE 子句: 143016 毫秒
- 加入條件: 143256 毫秒
邏輯一致性
雖然效能是一個重要的考慮因素,但邏輯一致性同樣重要。 WHERE 子句的過濾與左連接的語意一致。考慮以下查詢:在連接條件上使用過濾器進行左連接
SELECT * FROM TableA a LEFT JOIN TableXRef x ON x.TableAID = a.ID AND a.ID = 1 LEFT JOIN TableB b ON x.TableBID = b.ID;
在WHERE 子句中使用過濾器進行左連接
SELECT * FROM TableA a LEFT JOIN TableXRef x ON x.TableAID = a.ID LEFT JOIN TableB b ON b.id = x.TableBID WHERE a.id = 1;在左連接的情況下,WHERE子句過濾器確保只有匹配的行為給定 ID 返回,無論右側連接是否存在。這種行為在邏輯上是一致的,並且更容易理解。
結論
雖然性能差異可以忽略不計,但WHERE 子句的過濾速度稍微快一些,邏輯上也更一致,特別是在使用左連接時。因此,一般建議在 WHERE 子句中放置過濾器,以兼顧效能和可讀性。以上是SQL 查詢中 WHERE 子句或連線條件過濾速度更快嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本文討論了使用MySQL的Alter Table語句修改表,包括添加/刪除列,重命名表/列以及更改列數據類型。

文章討論了為MySQL配置SSL/TLS加密,包括證書生成和驗證。主要問題是使用自簽名證書的安全含義。[角色計數:159]

文章討論了流行的MySQL GUI工具,例如MySQL Workbench和PhpMyAdmin,比較了它們對初學者和高級用戶的功能和適合性。[159個字符]

本文討論了使用Drop Table語句在MySQL中放下表,並強調了預防措施和風險。它強調,沒有備份,該動作是不可逆轉的,詳細介紹了恢復方法和潛在的生產環境危害。

本文討論了在PostgreSQL,MySQL和MongoDB等各個數據庫中的JSON列上創建索引,以增強查詢性能。它解釋了索引特定的JSON路徑的語法和好處,並列出了支持的數據庫系統。

文章討論了使用準備好的語句,輸入驗證和強密碼策略確保針對SQL注入和蠻力攻擊的MySQL。(159個字符)


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能

ZendStudio 13.5.1 Mac
強大的PHP整合開發環境

SublimeText3 Linux新版
SublimeText3 Linux最新版