我們從SQL Server 2000遷移到2008,並且對於某些用戶(在某些數據庫角色中),當我們使用UNION運算符時,查詢運行非常緩慢。我嘗試了與UNION ALLSQL Server 2008升級後,使用UNION查詢運行速度非常緩慢
查詢是像下面
SELECT 'PONumber'= '','POId'=''
UNION
SELECT DISTINCT
'PONumber'=PONumber,
'POId'=RTRIM(CONVERT(varchar(32),po.POId))
FROM PurchaseOrder po JOIN ... JOIN ..... JOIN ...................
如果我只是刪除了第一部分(和UNION)和運行結果立即返回第二個查詢。
有什麼建議嗎?
在更新之前,相同的查詢是如何執行的?我會檢查執行計劃並重建受影響的索引以防萬一。 –
您需要查看執行計劃。看起來你不是模式限定你的對象(例如'dbo.PurchaseOrder',所以我認爲這可以解釋爲什麼不同的用戶可以得到不同的計劃) –
不知道是否有助於指出其中一個連接表使用sysusers和sysmembers系統tables uid列,因爲我們在數據庫中使用SQL Server內置安全性 –