首頁 >資料庫 >mysql教程 >SQL「LIKE」與「=」:什麼時候一個比另一個更快?

SQL「LIKE」與「=」:什麼時候一個比另一個更快?

Mary-Kate Olsen
Mary-Kate Olsen原創
2025-01-04 16:58:40221瀏覽

SQL `LIKE` vs `=`: When Is One Faster Than the Other?

SQL 'like' 與'=' 效能:情境分析

「like」或「=」哪個效能較好的問題使用SQL 通配符的問題過去已解決,但傳統觀點是「=」更快。但是,考慮查詢的特定上下文非常重要。

在列包含有限數量的固定、硬編碼的 varchar 標識符的情況下,任務是選擇與其中之一匹配的所有行,看來「喜歡」會有優勢。 「Like」只需要測試幾個初始字元是否匹配,而「=」必須比較整個字串。

但是,如 John Nelson的一篇文章(存檔於https://web.archive.org/web/20150209022016/http://myitforum.com/cs2/blogs/jne lson/archive/2007/11/16/108354.aspx),索引使用'like'的規則細微差別:

  • 如果過濾器在索引字段上使用“=”,可能會使用INDEX/CLUSTERED INDEX SEEK。
  • 如果使用不含通配符的 'like',索引用法與 '=' 的情況類似。
  • 如果使用 'like'開頭帶有通配符,可以對索引的全部或部分範圍使用索引掃描。
  • 如果'like' 首先與字串一起使用,然後與通配符一起使用,可以使用 INDEX SEEK 來查找匹配的行,然後檢查這些行是否完全匹配。

因此,'like' 的效能與「=」取決於特定的查詢上下文、通配符的位置以及索引的存在。在硬編碼標識符數量有限的情況下,透過完整字串比較,「like」確實可能比「=」執行得更快。但是,評估具體用例並考慮索引優化以確定最佳方法非常重要。

以上是SQL「LIKE」與「=」:什麼時候一個比另一個更快?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn