:WHERE句で使用すると、サブクエリはMySQLによってキャッシュされますか?次の照会で
SELECT column_a, column_b FROM table_a WHERE
column_b IN (SELECT b_id FROM table_b)
は、SQLパーサーによってキャッシュされたサブクエリSELECT b_id FROM table_b
ですか、(例えば、PHPで)、事前に問い合わせを行う変数として保存するために速くなり、その後、それらの値をCSV文字列として渡しますか?
SELECT column_a, column_b FROM table_a WHERE
column_b IN (1,3,4,6,8,10,16,18)
サブクエリで 'IN'を使うのはひどい考えです。クエリーは本質的に等結合であるため、ここでジョインしたい結果を得る方がよいでしょう。 'SELECT column_a、column_b FROM table_a JOIN table_b ON column_b = b_id' –
@TimSeguine:なぜそれはひどい考えですか? 'table_b'がN:M関係テーブルである場合、' JOIN'が使用されている場合、 'table_a'から複数の行を取得します。これは望ましくないかもしれません。 – naitsirch
@naitsirch MySQLは従属サブクエリのサポートが悪いので、悪い考えです。もしあなたが決してそれらを避けることができるなら、あなたはおそらくすべきです。よく選択された 'GROUP BY'は、ほとんどの時間外の結果を取り除きます。 –