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

mysql SELECT NOT IN()-素集合?

    存在しないものを使用する必要があります:

    SELECT DISTINCT a, b, c FROM t1 WHERE NOT EXISTS (SELECT NULL FROM t2 WHERE t1.a = t2.a AND t1.b = t2.b AND t1.c = t2.c)
    

    1つのキーだけをチェックする場合でも、NOTINを使用することはこれを行うための最良の方法ではありません。その理由は、NOT EXISTSを使用する場合、DBMSは必要な列にインデックスが存在する場合にのみインデックスをチェックする必要があるためです。一方、NOT INの場合は、実際のデータを読み取り、後でチェックする必要がある完全な結果セットを作成する必要があります。 。

    LEFT JOINを使用してからNULLをチェックすることも悪い考えです。クエリが両方のテーブルを完全に読み取り、その後多くを破棄する必要があるため、テーブルが大きい場合は非常に遅くなります。また、列でNULL値が許可されている場合、NULLをチェックすると誤検知が報告されます。



    1. phpMyAdminで外部キーを設定しますか?

    2. PHPでPostgreSQLに接続できないpg_connect()

    3. mysql:information_schemaでアクセスが拒否されました

    4. Symfony:ドライバーで例外が発生しました:mysqlでドライバーが見つかりませんでした