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

LEFTOUTERJOINとNOTEXISTSでのSQLパフォーマンス

    ジョーのリンクは良い出発点です。 Quassnoiもこれをカバーしています。

    一般的に フィールドに適切なインデックスが付けられている場合、またはより多くのレコードを除外する予定の場合(つまり、行がたくさんある場合 EXIST サブクエリ内)NOT EXISTS パフォーマンスが向上します。

    EXISTS およびNOT EXISTS 両方の短絡-レコードが基準に一致するとすぐに、レコードは含まれるかフィルターで除外され、オプティマイザーは次のレコードに移動します。

    LEFT JOIN すべてのレコードに参加します 一致するかどうかに関係なく、一致しないすべてのレコードを除外します。テーブルが大きい場合や、複数のJOINがある場合 基準では、これは非常に多くのリソースを消費する可能性があります。

    私は通常、NOT EXISTSを使用しようとします およびEXISTS 可能であれば。 SQL Serverの場合、IN およびNOT IN 意味的に同等であり、記述しやすい場合があります。 これらは、SQLServerで短絡が保証されている唯一の演算子の1つです。



    1. WSJDBCConnectionは、タイプOraclejdbcConnectionのオブジェクトをラップしません

    2. unaccentを使用してNpgsqlとEntityFrameworkでPostgreSQLをクエリする

    3. 表の印刷がページサイズに適合しない

    4. SQL Server JSON_Modify、すべてを更新する方法は?