sql >> データベース >  >> RDS >> Sqlserver

実行計画に並べ替えが表示されるのはなぜですか?

    SQL Server には、2 つのテーブルを結合する必要がある場合に選択できる 3 つのアルゴリズムがあります。 Nested-Loops-Join、Hash-Join、Sort-Merge-Join。どちらを選択するかは、コスト見積もりに基づいています。この場合、利用可能な情報に基づいて、Sort-Merge-Join が正しい選択であると判断しました。

    SQL Server の実行計画では、Sort-Merge は、Sort と Merge-Join の 2 つの演算子に分割されます。これは、データが既に並べ替えられている場合など、並べ替え操作が必要ない場合があるためです。

    結合の詳細については、こちらの結合シリーズをチェックしてください:http://sqlity.net/en/1146/a-join-a-day-introduction/ Sort-Merg-Join に関する記事はこちら:http://sqlity.net/en/1480/a-join-a-day-the-sort-merge-join/

    クエリを高速化するために、まずインデックスを調べます。クエリに一連のクラスター化インデックス スキャンがあります。それらのいくつかをシークに置き換えることができれば、おそらくより良いでしょう。また、SQL Server が生成する見積もりが、実際の実行計画の実際の行数と一致するかどうかも確認してください。それらが大きく離れている場合、SQL Server は多くの場合、不適切な選択をします。したがって、より良い統計を提供すると、クエリのパフォーマンスも向上します。



    1. Oracleのsysdateと比較した場合の日付型列の問題のwhere句の使用

    2. SQLの連続した日

    3. テーブルに複数のパーティションがありますか?

    4. 最小値を削除します。 SQLのテーブルの2つの値を比較した後のレコードの値