FIX: MERGE UNION 不搭配大量的 UNION 子句

文章翻譯 文章翻譯
文章編號: 295037 - 檢視此文章適用的產品。
Bug #: 351918 (SHILOH_BUGS)
全部展開 | 全部摺疊

在此頁中

徵狀

使用 20 個以上的 UNION ALL 子句分支的查詢會執行而不是,更有效率 MERGE UNION,這會造成過多的記憶體使用量,可能會導致查詢失敗的雜湊聯合使用。這暗示是 24 節點上執行的分散式資料分割檢視表有比 20 節點上檢視不同,及效率較低的計劃。

解決方案

如果要解決這個問題,取得最新的 Service Pack,SQL Server 2000。如需詳細資訊按一下 [下面的文件編號,檢視 「 Microsoft 知識庫 」 中的發行項]:
290211INF: 如何取得最新的 SQL Server 2000 Service Pack

其他可行方案

使用 MERGE UNION 查詢提示將會避開這個問題。請確定任何最佳化提示經過徹底測試前先放入實際執行。

狀況說明

Microsoft 已確認這是在 SQL Server 2000 中的問題。這個問題已經先在 SQL Server 2000 Service Pack 1 中獲得修正。

其他相關資訊

重製行為的步驟

  1. 在 Query Analyzer 中即會開啟視窗。
  2. 查詢] 功能表上選取 [顯示執行計劃]。
  3. 執行下列查詢:
    use Northwind
    go
    select top 1 * from
    (
    select orderid from orders union all
    select orderid from orders union all
    select orderid from orders union all
    select orderid from orders union all
    select orderid from orders union all
    select orderid from orders union all
    select orderid from orders union all
    select orderid from orders union all
    select orderid from orders union all
    select orderid from orders union all
    select orderid from orders union all
    select orderid from orders union all
    select orderid from orders union all
    select orderid from orders union all
    select orderid from orders union all
    select orderid from orders union all
    select orderid from orders union all
    select orderid from orders union all
    select orderid from orders union all
    select orderid from orders 
    union all select orderid from orders
    ) xx
    order by orderid
    					
  4. 按一下 [執行計劃] 索引標籤,並觀察其結果。
  5. 出查詢下面這一行的註解:
    union all select orderid from orders
    					
  6. 執行編輯過的查詢,並觀察在 [執行計劃] 索引標籤上的計劃中的變更。

屬性

文章編號: 295037 - 上次校閱: 2003年11月6日 - 版次: 3.2
這篇文章中的資訊適用於:
  • Microsoft SQL Server 2000 Standard Edition
關鍵字:?
kbmt kbbug kbfix kbsqlserv2000sp1fix KB295037 KbMtzh
機器翻譯
重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。
按一下這裡查看此文章的英文版本:295037
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。

提供意見

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com