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

MYSQL-INとEXISTの違い

    存在

    EXISTSは、文字通り、指定された基準の存在をチェックするためのものです。現在の標準SQLでは、比較のために複数の基準を指定できます(col_aとcol_bの両方がいつ一致するかを知りたい場合はIE)。これにより、IN句よりも少し強力になります。 MySQL INはタプルをサポートしていますが、構文は移植性がないため、読みやすさと移植性の両方の点でEXISTSの方が適しています。

    EXISTSで注意すべきもう1つのことは、その動作方法です。EXISTSはブール値を返し、最初の一致でブール値を返します。したがって、重複/複数を処理している場合、データとニーズに応じて、EXISTSの実行はINまたはJOINよりも高速になります。

    IN

    INは、OR句のシンタックスシュガーです。非常に順応性がありますが、その比較のために多くの値(1,000の北)を処理することには問題があります。

    しない

    NOT演算子は、ロジックを逆にするだけです。

    サブクエリとJOIN

    親に対して複数の子レコードがある場合、JOINは結果セットを膨らませるリスクがあるため、「常に結合を使用する」というマントラには欠陥があります。はい、DISTINCTまたはGROUP BYを使用してこれに対処できますが、これにより、JOINmootを使用することによるパフォーマンス上の利点が得られる可能性が非常に高くなります。データと、結果セットに必要なものを理解してください。これらは、パフォーマンスの高いSQLを作成するための鍵です。

    いつ、なぜ何を使用するかを知ることを繰り返す-LEFT JOIN IS NULLは、比較される列がnull許容でない場合、MySQLで最速の除外リストです それ以外の場合は、NOT IN /NOTEXISTSの方が適しています。

    参照:



    1. MySQLがテーブルからすべてのインデックスを削除する

    2. インデックスの削除が作成よりも時間がかかるのはなぜですか?

    3. 巨大な(95Mb)JSON配列を小さなチャンクに分割しますか?

    4. MySQLを使用して、今日がユーザーの誕生日かどうかを判断します