多くの中で、特定のSQLクエリのために、アプリケーションの1ページが非常にゆっくりと読み込まれることがわかりました。多くの行を返すSELECTサブクエリを使用したSELECT IN()SQLクエリの最適化
私はthis document about subquery optimizationを読みましたが、MySQLがどのようにサブクエリを最適化するかを概説していて、どのようにクエリを最適化できるかは概説されていませんでした。私はドキュメントから得たアイデアを試してみましたが、役に立たなかったのです。
これは現在、私の遅いクエリです。私は読みやすくするために、テーブル名とカラム名を簡素化:
SELECT
a.one, a.two, a.three, a.four,
b.*,
a.id,
b.id,
c.one, c.id,
d.one,
f.one
FROM a
JOIN b ON a.id = b.a_id
JOIN c ON c.id = b.c_id
JOIN e ON b.e_id = e.id
JOIN d ON d.id = e.d_id
JOIN f ON f.id = b.f_id
WHERE a.id IN (
SELECT a_id FROM b WHERE a_id IS NOT NULL AND g_id = 95
)
SELECTサブクエリは、現在、私は親クエリの遅延が発生すると思わ750+行を返します。クエリ全体には25秒かかります。
このクエリはどのように最適化できますか?
どのテーブルが 'g_id'ですか? –