小编San*_*sKY的帖子

使用 IN() 提高查询性能

我有以下 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,但是在查看执行计划时,它似乎没有使用此索引。对此的任何建议或见解将不胜感激。

下面是图形化计划:

执行计划

这是.sqlplan 文件的链接

performance sql-server-2008-r2 filtered-index query-performance

14
推荐指数
2
解决办法
2973
查看次数