我有一个查询,该查询何时具有一个IN
子句的变量:IN ('123', '456')
IN()
子句中放入两个项目,查询将在4秒后返回IN()
子句中,查询仍然会在4秒内返回查询是一个嵌套查询。
我尝试了调整,建立索引并将OPTIONS(FAST x)添加到查询中。翻了ARITHABORT ON
和其他几个,没什么区别。
SET NOCOUNT ON;
SET ARITHABORT ON;
SET QUOTED_IDENTIFIER OFF;
SELECT columns
FROM
(SELECT columns
FROM
(SELECT columns
FROM
(SELECT columns
FROM sometable
CROSS JOIN xyz_table) Level1
) Level2
) Level3
WHERE
items IN ('123', '456'));
我希望结果能够以较少的项目过滤更快返回。
答案 0 :(得分:1)
4秒是 LONG TIME (长时间),无论您使用的是2项还是200。我也看到了这一点:
查询是嵌套查询
我建议使用此IN()
子句以外的其他方法来提高效果。
但是IN()
子句中的200个项目既不是典型的也不是特别好的做法。通常,最好找到一种方法来编写定义这些项目的SELECT
语句,然后针对该JOIN
编写APPLY
或SELECT
。
答案 1 :(得分:0)
我建议的解决方法如下:用<To href="">Contact Us</a>
(嵌套查询)将条件where in
替换为temporay表,在其中存储要查找的值。
脚本会是这样的
首先在inner join
然后运行这样的脚本
myTempTable