2017年10月6日 星期五

[SQL] Compare Operator - where Concatenation

  • sql 使用 where 下列使否影響查詢成本
    • "鍵值資料行" 個別使用篩選條件
    • "鍵值資料行" 透過資料連接
  • 資料庫使用 Adventure Works for SQL Server 2012 的資料表 Production.Product 
    • Step 1. 加入 NonClustered 包含 Name, ProductNumber, Color
    • Step 2. 查詢
select ProductID, Name, ProductNumber, Color from Production.Product 
where Name = 'Blade' and ProductNumber = 'BL-2036'
select ProductID, Name, ProductNumber, Color from Production.Product 
where Name + ProductNumber = 'BladeBL-2036'
    • Step 3. 查詢結果
      • 查詢 1. 使用索引方式,由個別 "鍵值資料行" 進行資料比對
      • 查詢 2. 因 "鍵值資料行" Name 與 ProductNumber 連接後,再進行資料比對,此照成無法使用 "索引搜尋",而進行 "掃描" 比對
    • Result:
      1. 索引的 "鍵值資料行" 只能進行個別資料比對,連接 "鍵值資料行" 將會失去索引
      2. 盡量不要針對索引的 "鍵值資料行" 進行不必要的運算,因查詢時會失去運用 "搜尋" 的功能
  • REF:
    • SQL Server 效能調校

沒有留言:

張貼留言