2016-12-19 9 views
-1
  1. クエリ1 - インデックス模索このクエリがなぜとても遅くなるのかについてのアイデアはありますか?

    SELECT P.Date_Send_Ins,C.* 
    FROM DATABASE1..TABLE1 P JOIN DATABASE2..TABLE2 C ON P.COLUMN1 = C.COLUMN1 AND P.COLUMN2 = C.COLUMN2 
    WHERE LEFT(C.COLUMN3 ,7) LIKE 'YYYY/MM' and P.Date_Send_Ins LIKE 'YS%' 
    

クエリ1と3です - インデックスが

SELECT P.Date_Send_Ins,C.* 
FROM DATABASE1..TABLE1 P WITH (FORCESEEK) JOIN DATABASE2..TABLE2 C ON P.COLUMN1 = C.COLUMN1 AND P.COLUMN2 = C.COLUMN2 
WHERE LEFT(C.COLUMN3 ,7) LIKE 'YYYY/MM' and LEFT(P.COLUMN3 ,2) = 'YS' 
  • クエリ2

    SELECT P.Date_Send_Ins,C.* 
    FROM DATABASE1..TABLE1 P JOIN DATABASE2..TABLE2 C ON P.COLUMN1 = C.COLUMN1 AND P.COLUMN2 = C.COLUMN2 
    WHERE LEFT(C.COLUMN3 ,7) LIKE 'YYYY/MM' and LEFT(P.COLUMN3 ,2) = 'YS' 
    
  • クエリ3を求めます速いSQL Serverではクエリ2が遅すぎ、結果が表示されません。

    他のサーバーではすべてが高速ですが、私はsp_updatestatsを実行しますが、それは良くありません。

    この問題を解決するにはどうすればよいですか?

  • +1

    DATABASE1..TABLE1にはどのようなインデックスがありますか? –

    +0

    インデックスが不良であるためクエリが遅くなりました。問題はインデックスを無効にしたときに解決されました。ありがとう – shaghayegh

    +0

    ようこそ。 –

    答えて

    0

    where句のどのテーブル列でも関数を使用しないでください。ほとんど常にパフォーマンス上の問題です。たとえばLEFT()を使用しないでください

    SELECT P.Date_Send_Ins,C.* 
    FROM DATABASE1..TABLE1 P 
    JOIN DATABASE2..TABLE2 C ON P.COLUMN1 = C.COLUMN1 AND P.COLUMN2 = C.COLUMN2 
    WHERE C.COLUMN3 LIKE 'YYYY/MM%' 
    and P.COLUMN3 = 'YS%' 
    
    +0

    私はこの機能を使用しませんが、別のユーザーがそれを使用します。私はDBAであり、SQL Serverのパフォーマンスを制御する必要があります。 – shaghayegh

    +0

    okですが、そのユーザーにwhere句のデータの機能を回避する方法を教えてください....それはあなたにも役立ちます –

    関連する問題