iT邦幫忙

2023 iThome 鐵人賽

DAY 25
0
自我挑戰組

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

Day 25: SQL Not Equal 的效能影響

  • 分享至 

  • xImage
  •  

第 25 天,希望大家連假過得愉快 ~

在 SQL 中,在條件式中用 <> (Not Equal) 運算子,可找出不等於特定值的資料。

其實 <> 是 SARGable 的運算子之一,這表示它可以運用索引減少查詢的時間。不過在 Sargable - Wikipedia 中,<> 被歸類在「Sargable operators that rarely improve performance」。

不少的 SQL 效能改進的文章都會提到避免使用 <> 進行查詢,避免效能的減損,但 Wikipedia 上只有比較簡單的說明。為了更瞭解 <> 運算子對效能的影響,上網搜尋的相關資料,查詢到網友的 sql - Is <> SARGable or not? If not, what can I use instead? - Stack Overflow 提問,下方有網友提出的解答:

使用 = 的話,通常只需要從索引中取得單一或有限的資料,但 <> 通常會需要掃描整個索引,以取得相關的資料,因此效能幫助不如其他運算子來得多。

Avoid Using Not Equal in WHERE Clause 這篇文章內可以看到,在同樣的查詢,只調整運算子,但查詢效果相同的語法,使用 <>IN 都會去掃描索引。但是使用 <> 的查詢語法,明顯花了較多的成本去尋找索引,導致查詢速度較慢。

因此,應減少 <> 的使用,並考慮用其它運算子替代。


上一篇
Day 24: SQL Server 的字串分割
下一篇
Day 26: SQL SARGAble
系列文
C# 和 SQL 探索之路 - 230
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言