我有兩個疑問,讓我們給他們打電話查詢和查詢B.ALL兩個select語句使用UNION或UNION讓他們難以置信的慢
這兩個查詢的第二個對我的情況下運行測試和查詢A返回1結果,並且查詢B返回0結果。
如果我union(或union all)這兩個查詢,它需要一分鐘以上才能返回(預期的)1結果。
這兩個查詢都從相同的表中選擇相同的列。我可能會在沒有工會的情況下重寫這整個事情,因爲我有一個高度條件化的where子句,但我試圖擺脫這樣做。
任何想法?我不確定我有多少精確的查詢和模式可以分享,但我很樂意提供我能做的。
這是在MSSQL 2008上,如果它對任何人的迴應都很重要。
你能通過從一個新的空模式開始複製結果並添加少量僅包含非機密測試數據的表?它不一定是來自應用程序的數據 - 只是隨機數或樣本數據庫(或來自StackOverflow數據轉儲的數據,或者您真正喜歡的任何數據)。 – 2011-03-22 21:26:58
有問題的數據庫曾經在2005年運行,直到最近,我碰巧有一個副本(具有相同的數據)仍然在2005服務器上運行。完整查詢(包括union)按預期執行,不存在額外的開銷。是否有任何具體的改變從2005年 - > 2008年,會導致任何人都知道? – Jay 2011-03-22 21:31:31
我能夠在不同的2008服務器上覆制。無論compat級別如何,我都會遇到問題。我沒有想到這會有所幫助,但認爲這值得一試。 – Jay 2011-03-22 21:37:44