首頁 >資料庫 >mysql教程 >SQL 中的「LIKE」與「=」:通配符何時更有效?

SQL 中的「LIKE」與「=」:通配符何時更有效?

Barbara Streisand
Barbara Streisand原創
2025-01-05 07:37:43970瀏覽

`LIKE` vs. `=` in SQL: When is Wildcard Matching More Efficient?

SQL 中使用通配符時'LIKE' 與'=' 的效能

一般認為'=' 在使用通配符時比'LIKE' 更有效率向SQL 查詢中的通配符。然而,情況可能並不總是如此。

考慮以下範例:

SELECT * FROM table WHERE value LIKE 'abc%'
SELECT * FROM table WHERE value = 'abcdefghijklmn'

在這種情況下,「LIKE」只需要比較前三個字元即可找到一場比賽。 '=' 必須比較整個字串。因此,在這種情況下,「LIKE」似乎具有優勢。

但是,索引的使用會影響「LIKE」查詢的效能。正如 Jonathan Nelson 在 MyITForum 的這篇文章中所述:

  • 如果您的過濾條件使用“=”並且該字段已建立索引,則它可能會使用 INDEX/CLUSTERED INDEX SEEK。
  • 如果您的篩選條件使用不含通配符的“LIKE”,則使用索引的可能性與'='。
  • 如果您的篩選條件使用「LIKE」開頭並帶有通配符,那麼使用索引的可能性就小得多。
  • 但是,如果您的過濾條件使用“LIKE” ' 以 STRING FIRST 開頭並在其後某處有通配符,SQL 可能會使用 INDEX SEEK來尋找具有相同第一個起始字元的行,然後在這些行中尋找精確的行

因此,帶有通配符的「LIKE」與「=」查詢的效能取決於多種因素,包括索引使用情況、通配符的位置以及所使用的特定SQL 引擎。

以上是SQL 中的「LIKE」與「=」:通配符何時更有效?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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