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

MySQL IN句はサブクエリを複数回実行しますか?

    あなたの仮定は誤りです。サブクエリは1回だけ実行されます。結合よりも遅い理由は、IN インデックスを利用することはできません。 WHEREごとに引数を1回スキャンする必要があります 句が評価されます。つまり、tableAの行ごとに1回評価されます。 INを置き換えるだけで、変数やストアドプロシージャを使用せずに、クエリを最適化できます。 したがって、結合すると:

    SELECT tableA.field1, tableA.field2, [...]
    FROM tableA 
      INNER JOIN tableB ON tableA.id = tableB.id
    

    両方のテーブルからすべてのフィールドを取得してもかまわない場合を除いて、SELECTで必要なフィールドを列挙する必要があります。 句; tableA.* たとえば、構文エラーが発生します。



    1. 新しいOracleユーザーを作成して権限を付与する:構文と例

    2. 間違ったエンコーディングを挿入した後、MySQLデータベースのデータを更新する

    3. MySQL AまたはB、ただし両方ではない

    4. バージョンをbugzillaからredmineの新しいカスタム「ソースバージョン」フィールドに移行するにはどうすればよいですか(どのSQL構文が必要ですか)?