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

LEFT JOIN INNER JOIN よりも大幅に高速

    左結合は、SQL が最初に小さな選択を実行し、次にこの小さなレコード セットに結合することを強制されるため、高速に見えます。何らかの理由で、オプティマイザはこれを自然に実行したくありません.

    強制的に結合を正しい順序で行う 3 つの方法:

    <オール>
  1. データの最初のサブセットを一時テーブル (またはテーブル変数) に選択して結合します
  2. 左結合を使用します (内部結合ではなく左結合であるため、異なるデータが返される可能性があることに注意してください)
  3. FORCE ORDER キーワードを使用します。テーブルのサイズまたはスキーマが変更された場合、クエリ プランが正しくない可能性があることに注意してください (https://dba.stackexchange.com/questions/45388/forcing-join-order )


    1. PHP/MySQLを使用した階層再帰メニュー

    2. Postgresにモジュールをインポートしたり拡張機能をインストールしたりするにはどうすればよいですか?

    3. MariaDBで連結演算子としてパイプ(||)を有効にするための7つのオプション

    4. php-mysqlはデータベースから次と前のIDをフェッチします