このクエリが完了するまでに 10 秒かかります。しかし、手動でサブクエリを実行し、t1.id
そのリストへの制限を変更すると、0.00 秒で完了します。MySQL がクエリをより速く実行できるようにするにはどうすればよいですか?
SELECT t1.col1, t2.col2, t3.col3
FROM t1, t2, t3
WHERE t1.t2id = t2.id AND t1.t3id = t3.id
AND t1.id IN ( SELECT id FROM t4 WHERE blah = 123 )
また、なぜこれが起こっているのですか?t1.id でフィルタリングする前に、MySQL が何らかの方法で 3 つのテーブルすべてを結合するとします。
t1、t2、および t3 には、それぞれ 3000、15、および 80 行が含まれます。サブクエリは 2 ~ 10 行を返します。