我有以下 SQL 查询:
SELECT
Event.ID,
Event.IATA,
Device.Name,
EventType.Description,
Event.Data1,
Event.Data2
Event.PLCTimeStamp,
Event.EventTypeID
FROM
Event
INNER JOIN EventType ON EventType.ID = Event.EventTypeID
INNER JOIN Device ON Device.ID = Event.DeviceID
WHERE
Event.EventTypeID IN (3, 30, 40, 41, 42, 46, 49, 50)
AND Event.PLCTimeStamp BETWEEN '2011-01-28' AND '2011-01-29'
AND Event.IATA LIKE '%0005836217%'
ORDER BY Event.ID;
Run Code Online (Sandbox Code Playgroud)
我在Event
表上也有一个列的索引TimeStamp
。我的理解是这个索引没有使用,因为IN()
声明。所以我的问题是有没有办法为这个特定的IN()
语句建立索引来加速这个查询?
我还尝试将 上Event.EventTypeID IN (2, 5, 7, 8, 9, 14)
的索引添加为过滤器TimeStamp
,但是在查看执行计划时,它似乎没有使用此索引。对此的任何建议或见解将不胜感激。
下面是图形化计划:
performance sql-server-2008-r2 filtered-index query-performance