【发布时间】:2014-10-28 02:20:38
【问题描述】:
当访问具有相当大表的数据库时,我当前的查询运行速度非常慢
SELECT *
FROM table1
WHERE timestamp BETWEEN 635433140000000000 AND 635433150000000000
AND ID IN ('element1', 'element2', 'element3', ... , 'element 3002');
如您所见,IN 子句有数千个值。该查询大约每秒执行一次。
有没有其他的写法来提高性能?
【问题讨论】:
-
有没有办法可以将元素链接到 Table1 中的字段。通过这样做,如果你把它们放在一个表中,你可以做一个简单的连接。这会稍微提高性能。
-
查看查询的执行计划。如果查询速度很慢,则您缺少基础表上的索引和/或统计信息。如果元素来自另一个表,则加入该表而不是尝试创建
in语句。 -
元素从何而来?它们多久更换一次?
-
timestamp列是否已编入索引?我假设id已经被索引了 -
两个索引都存在。元素来自 c# 代码并经常更改。
标签: sql sql-server performance