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

SQL Server 日期時間比較優化:直接比較比 DateDiff 快 40%

     編輯:關於SqlServer

常見寫法

-- 使用 DateDiff (較慢)
SELECT COUNT(*) FROM 表 WHERE DATEDIFF(second, GETDATE(), 時間欄位) > 0

優化寫法

-- 直接比較 (快 ~40%)
SELECT COUNT(*) FROM 表 WHERE 時間欄位 > GETDATE()

實測數據 (50 萬筆)

  • DATEDIFF:~1200 ms
  • 直接比較:~750 ms

原理

  • DATEDIFF 需逐列計算函數,無法使用索引求值 (SARGable)。
  • 直接比較屬於 SARGable 條件,優化器可利用索引 Seek。

延伸建議

  • 查詢「過去 7 天」:WHERE 時間欄位 >= DATEADD(day, -7, GETDATE())。
  • 避免在 WHERE 欄位上包裹函數 (如 CONVERT, YEAR()),改寫為範圍比較。
  • 確保時間欄位有索引。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved