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

EXISTSとINを使用したサブクエリ-MySQL

    プランの説明 正確にExistsを使用する必要がある理由を示したはずです 。通常、質問は Exists vs Count(*)存在する より高速です。なぜですか?

    • NULLによって存在する課題に関して:サブクエリが Nullを返す場合 、INの場合、クエリ全体が Nullになります 。したがって、それも処理する必要があります。ただし、 Existを使用する 、それは単なる false 。対処するのがはるかに簡単です。単にIN Nullとは何も比較できません しかし、存在する できます。

    • 例えば Exists(Select * from yourtable where bla ='blabla'); 1つのヒットが見つかった/一致した瞬間にtrue/falseを取得します 。

    • この場合、 IN 一種のCount(*)の位置を取ります すべてを選択するには WHEREに基づいて一致する行 すべての値を比較しているからです。

    ただし、これも忘れないでください:

    • EXISTS INに対して高速で実行されます :サブクエリの結果が非常に大きい場合。
    • IN EXISTSに先んじる :サブクエリの結果が非常に小さい場合。

    詳細については、を参照してください:



    1. PostgreSQLでのpg_sleep()のしくみ

    2. MySQLのタイムゾーンを設定するにはどうすればよいですか?

    3. Oracleで文字列の最後のインデックスを検索する

    4. エラーの修正:SQLiteの「UNIONの左右のSELECTには同じ数の結果列がありません」