我根據是否設置了變量來篩選表格。但是聚集索引沒有被使用。是否有可能讓查詢以某種方式使用索引。 (我不能動態地創建在這種情況下,查詢)根據變量和使用指數篩選表格
DECLARE @UseFilter as bit = 1
select pkEventId from EventEvent
where pkEventID = 57637 or @UseFilter = 0
執行計劃(不使用索引)
如果我跳過Or
使用的索引。
select pkEventId from EventEvent
where pkEventID = 57637
執行計劃(使用索引)
你做一個'IF @UseFilter = 0',使2個不同的查詢 – ughai
@ughai在這種情況下,我不能這樣做,要麼。 – Magnus
當@ UserFilter設置爲1時,部件'或@UseFilter = 0'應該沒有意義。@UserFilter設置爲0時執行計劃是什麼? 也許試試'WHERE pkEventID CASE WHEN @UseFilter = 0 THEN 57637 ELSE IS NOT NULL END'(從名稱猜測它不可爲空) –