sql - 如何在 SQL Server 中使大型 IN 子句更有效?

标签 sql sql-server performance

在访问具有相当大表的数据库时,我当前的查询运行速度非常慢

SELECT * 
FROM table1
WHERE timestamp BETWEEN 635433140000000000 AND 635433150000000000
  AND ID IN ('element1', 'element2', 'element3', ... , 'element 3002');

如您所见,IN 子句有数千个值。该查询大约每秒执行一次。

有没有其他的写法来提高性能?

最佳答案

将 IN 的元素添加到索引临时表(如果元素更改)或永久表(如果元素是静态的)并对其进行内部连接。

关于sql - 如何在 SQL Server 中使大型 IN 子句更有效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25646751/

相关文章:

sql - PL/SQL中IF block 的奇数编码风格

sql - MS Access-导出时导致别名 'Description' 循环引用

Linux 上的 Java 写入文件被删除但我仍然可以写入

python - 如何从多个列表中找到最大值?

mysql - SQL - 如何找到带有 LIMIT 的 SQL 语句的平均值?

sql - 使用字符串变量对表的每一行执行存储过程

sql-server - 如果未定义 order by 子句,则不同选择中的第一列是默认顺序

sql-server - 查询在 SQL 中运行时间不到一毫秒,但在 Entity Framework 中超时

sql - 更改我的主键列种子时出现问题

performance - 为什么golang比scala慢?