sql - 优化 WHERE 子句中包含许多 OR 语句的查询

标签 sql sql-server sql-server-2008

编写查询的最佳方法是什么,它将给出与此相同的结果:

SELECT X,Y,* FROM TABLE
WHERE (X = 1 AND Y = 2) OR (X = 2235 AND Y = 324) OR...

表有聚集索引(X,Y)。 表很大(数百万)并且可能有数百个 OR 语句。

最佳答案

您可以创建另一个包含 X 列和 Y 列的表 并将值插入该表中,然后与原始表连接

create table XY_Values(X int, Y int)

Insert into XY_Values values
(1,2),
(2235,324),
...

然后

SELECT X,Y,* FROM TABLE T
join XY_Values V
on T.X=V.X
and T.Y=V.Y

您可以在 XY_Values 上的 (X,Y) 上创建索引,这将提高性能

您也可以创建 XY_Values 作为表变量..

关于sql - 优化 WHERE 子句中包含许多 OR 语句的查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12195855/

相关文章:

sql - 如何从存储过程发送邮件?

php - Amazon SNS 移动推送 - 如何发送/发布到多个终端节点?

SQL Server默认日期时间戳?

sql-server - T-SQL:第一行的 CTE row_number over() 错误结果

sql-server - 在 ssis 中,如何从脚本组件中包含对全局变量的引用?

sql-server - 在 SQL Server 中对超过 8000 字节进行哈希处理

sql - 如何在postgres select中获取数字第一次出现的位置

mysql - SQL:使用 GROUP BY 子句选择第二低的值(通过子查询)

sql - 如何将管道分隔的文本文件数据导入 SQL Server 表

sql-server-2008 - ServerVersion : Invalid Operation. 连接关闭