iT邦幫忙

2023 iThome 鐵人賽

DAY 26
0
自我挑戰組

C# 和 SQL 探索之路 - 2系列 第 26

Day 26: SQL SARGAble

  • 分享至 

  • xImage
  •  

嗨嗨,昨天有提到 SARGAble ,這是 Search ARGument ABLE 的縮寫,意思是「可以用索引尋找」(維基百科: Sargable)。可用於描述一個查詢是否符合此條件。

如果一個查詢不符合 SARGAble 的話,那麼查詢效率可能會變差。
因此,要改善查詢效率的話,通常會先檢查查詢的條件是否符合 SARGAble,以有效的利用索引。

SARGAble 運算子如下:

<, >, >=, <=, >=, BETWEEN, LIKE, IS [NOT] NULL, IN

效果不那麼好的運算子:

<>, NOT, NOT IN, NOT LIKE ...

這些運算子使用時,可能導致掃描整個索引,效率和掃描整個資料表沒有差異太多。

以下則是完全不符合 SARGAble 的狀況。

  • WHERE name LIKE '%Alice%': 只在字串後面加入 % 的話,仍然能有效利用索引,在前面或前後加入 %,則無法有效利用索引。
  • WHERE SQRT(length) = 5.0 使用了函數,沒有辦法利用索引。
  • WHERE First + Last = Fullname 需要計算的條件,沒辦法利用索引。

上一篇
Day 25: SQL Not Equal 的效能影響
下一篇
Day 27: SQL 執行計畫如何產生
系列文
C# 和 SQL 探索之路 - 230
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言