2009-03-25 5 views
4

:面白い何ハッシュは、本文のクエリ上に表示しよう - 私はSQL Server 2005で次のクエリを持っているSQL Server 2005の

SELECT 
    PRODUCT_ID 
FROM 
    PRODUCTS P 
WHERE 
    SUPPLIER_ORGANIZATION_ID = 13225 
    AND ACTIVE_FLAG = 'Y' 
    AND CONTAINS(*, 'FORMSOF(Inflectional, "%clip%") ') 

は(私は別のSUPPLIER_ORGANIZATION_IDを使用した場合のに対し、これは生成ハッシュマッチを使用していることです古いサプライヤ)、それはマージ結合を使用します。明らかに、ハッシュはマージ結合よりもはるかに遅いです。私が得意でないのは、違いがある理由と、それをより速く動かすために必要なことです。

FYIでは、PRODUCTSテーブルには約500万のレコードがあります。サプライヤ組織IDが選択されると(13225)、そのサプライヤには約25000の製品があります。

ありがとうございます。

+0

SQL Server - どのバージョンですか?その情報を(タグとして、そしておそらく質問自体に)追加してください。 – Tomalak

+0

SQL Server 2005.発行する変更を行いました。 –

+0

ありがとうございます。 +1の質問です。私は確かにそれに答えることはできませんが、DBCC DBREINDEXとテーブルの更新統計を試しましたか? – Tomalak

答えて

1

私はOPTIMIZE FORクエリヒントを使用して、一方向または他の方法を強制します。

SELECT 
    PRODUCT_ID 
FROM 
    PRODUCTS P 
WHERE 
    SUPPLIER_ORGANIZATION_ID = @Supplier_Organisation_Id 
    AND ACTIVE_FLAG = 'Y' 
    AND CONTAINS(*, 'FORMSOF(Inflectional, @Keywords) ') 
OPTION (OPTIMIZE FOR (@Supplier_Organisation_Id = 1000)) 

もう一つの事はあなたの統計情報が古くなって、自動更新の転換点は、多くの場合、選択したクエリプランは、あなたのデータのための理想的ではないかもしれないことを十分に低い意味ではありません可能性があります。私はあなたのProductsテーブルのSTATISTICSの更新を試してみることをお勧めします。これは、問題の一部である場合、これを定期的に行うためのジョブを作成することがあります。

関連する問題