2017年10月1日 星期日

[SQL] Compare Operator - where "=", "<>", "NOT IN" and "EXCEPT"

  • sql 使用 where 下列使否影響查詢成本
    • "=":精確值比對
    • "<>":否定式比對
    • "NOT IN":否定式比對
    • "EXCEPT" 
  • 資料庫使用 Adventure Works for SQL Server 2012 的資料表 Production.Product 
    • Step 1. 查詢
select * from Production.Product where Name = 'Chainring'
select * from Production.Product where Name <> 'Chainring'
select * from Production.Product where Name NOT IN ('Chainring')

select * from Production.Product 
EXCEPT
select * from Production.Product where Name = 'Chainring'
    • Step 2. 查詢結果
      • 查詢 1 ("="):使用 "索引搜尋"功能,可快速找到資訊
      • 查詢 2 ("<>"):無法使用 "索引搜尋",因採用 "叢集索引掃描",讓效率不好的原因
      • 查詢 3 ("NOT IN"):使用 "<>" 與 "NOT IN" 成本是相同
      • 查詢 4 ("EXCEPT"):計畫更複雜,使成本相對的高
    • Result:
      • "=" 精確值的比對方式,成本低於使用 "<>" 與 "NOT IN"
      • 集合操作 "EXCEPT" 查詢成本非常高 
  • REF:
    • SQL Server 效能調校

沒有留言:

張貼留言