我有一個非常大的表(1500萬行,這是一個審計表)。硬編碼日期字符串比SELECT中的DateTime快得多?
我需要運行檢查出現在審計表是在特定日期之後查詢並符合一定的標準(我要尋找的是發生在只有當天的審計記錄)
當我運行:
SELECT Field1, Field2 FROM AUDIT_TABLE WHERE AUDIT_DATE >= '8/9/12'
結果回來相當快(數秒,不壞的15M行)
當我運行:
SELECT Field1, Field2 FROM AUDIT_TABLE WHERE AUDIT_DATE >= @DateTime
它需要11-15秒,並進行全表掃描。
我查詢的實際字段是DATETIME類型,索引也在該字段中。
AUDIT_TABLE是在AUDIT_DATE索引還是分區?您的第二個示例可能會阻止索引被使用。 – stevepastelan 2012-08-09 14:43:20
比較執行計劃;你的參數化版本最有可能有一個最適合所有可能輸入的執行計劃,但可能不是針對特定參數值的最佳計劃... – Mr47 2012-08-09 14:44:24