编写查询的最佳方法是什么,它将给出与此相同的结果:
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/