如何使 SQL Server 中的大 IN 子句更有效?

Alg*_*dyz 3 sql sql-server performance

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

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

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

有没有另一种方法来编写它来提高性能?

Eri*_*ein 5

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