0
我不知道这是否是一个SQL Server的错误或我的错,但这里的情况是:SQL服务器:单独的查询返回在不到一秒钟,但结合那些INTERSECT需要3分钟
查询1
select PK FROM PI_INFORM WHERE RECORD_DATE>DATEADD(hour,-48, GETDATE())
这需要小于0.5秒,并返回20000个记录
QUERY 2
SELECT PK FROM dbo.getInformFullTextPKs('"HELLO"')
这需要不到1秒,并返回500条记录
问题 如果我们加入这两个查询与相交,时间超过3分钟。执行计划显示一切都使用INDEX SEEK执行。
SELECT * FROM PI_INFORM WITH (NOLOCK)
WHERE PK IN (
select PK FROM PI_INFORM WHERE RECORD_DATE>DATEADD(hour,-48, GETDATE())
INTERSECT
SELECT PK FROM PI_INFORM WHERE PK IN (SELECT PK FROM dbo.getInformFullTextPKs('"HELLO"'))
)
请张贴所有三个图形执行计划。 – usr 2012-07-07 12:41:06
您是否有意使用NOLOCK,并充分了解其局限性,或者是一个精灵灰尘涡轮按钮? – 2012-07-07 20:47:53