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