2009-12-17 46 views
0

我有一些問題,下面的查詢:當我運行它們每個查詢問題與聯合查詢與圖像/ VARBINARY場

SELECT v.idnum 
     ,v.full_name 
     ,convert(varbinary(max),s.signature) as Sig 
FROM   AppDB.dbo.v_People1 AS v INNER JOIN 
         OtherDB.dbo.Signatures AS s ON v.idnum = s.idnum 

UNION 

SELECT v.idnum 
    , v.full_name 
    , convert(varbinary(max), s.signature) as Sig 
FROM   AppDB.dbo.v_People2 AS v INNER JOIN 
         AppDB.dbo.Signatures AS s ON v.idnum = s.idnum 

分別不快速執行聯合(< 5秒),但是當我運行它使用聯合它需要永遠執行(事實上它說的是執行,我沒有看到它成功運行)

在OtherDB.dbo.Signatures簽名字段是一個varbinary最大)和AppDB.dbo.Signatures字段是一個圖像,這就是爲什麼我使用轉換表達式。 有誰知道這個問題可能是什麼,以及我可以如何解決它?

謝謝

回答

1

我不知道是否因爲你使用的是一個UNION而不是一個UNION ALL。 UNION本身將刪除數據集之間的重複行。這可能會導致blob字段延遲。使用UNION ALL查看是否有區別。

+0

這固定了它。謝謝! 爲什麼要檢查一行是否重複使它慢得多?在第一個查詢中只有40行,在第二個查詢中只有10行 – zSynopsis 2009-12-17 17:46:07

+1

它與你的blob字段有關,它們沒有真正的可比性(不能對它們使用DISTINCT),所以UNION會有意義嗆着它。我可以四處尋找更多的技術解釋。 – Brettski 2009-12-17 17:56:58