首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

SQL 查詢優化四大原則:避免欄位運算、型別一致、減少函數、拆解 OR 條件

     編輯:關於SqlServer
  1. 不要對欄位做運算/函數

    差:WHERE -col1 = 5
    好:WHERE col1 = -5

    原因:欄位端運算導致索引失效,掃描全表計算後再比對。

  2. 欄位與常數型別一致

    差:WHERE col_int = '2' (字串比數值)
    好:WHERE col_int = 2

    原因:隱含轉換雙方為浮點數再比較,索引同樣失效。

  3. 減少 WHERE 中的函數呼叫

    差:WHERE DATEDIFF(day, col_dt, GETDATE()) = 0
    好:WHERE col_dt >= '2009-10-26' AND col_dt < '2009-10-27'

    原因:函數讓索引無法求值,改用範圍查詢可用索引 Seek。

  4. 盡量拆解 OR 條件

    差:WHERE a = 1 OR b = 2 (易觸發全表掃描)
    好:WHERE a = 1 UNION ALL WHERE b = 2 (視索引情況)

    原因:OR 往往阻礙索引使用,改寫為 UNION 讓各分支獨立最佳化。

快速檢核清單

  • ☐ WHERE 子句欄位端是否有運算/函數?
  • ☐ 參數/常數型別是否與欄位完全一致?
  • ☐ 日期/字串篩選是否改用範圍而非函數?
  • ☐ 複雜 OR 條件是否可拆解為 UNION?
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved