次のようなものがあります。
SELECT c.id
FROM contact AS c
WHERE c.id IN (SELECT s.contact_id
FROM sub_table AS s
LEFT JOIN contact_sub AS c2 ON (s.id = c2.sub_field)
WHERE c2.phone LIKE '535%')
ORDER BY c.name
問題は、クエリに非常に長い時間がかかることです(> 2分)が、サブクエリを取得して個別に実行し、IDを内破してメインクエリに挿入すると、1秒未満で実行されます。データの取得と内破。
メソッドとキーの両方の説明が適切に同じ方法で使用されていることを確認しました。サブクエリは 200 を超える ID を返しません。
サブクエリ メソッドにこれほど長い時間がかかる原因は何でしょうか?
ところで、上記のクエリは結合で記述できることは知っていますが、私が持っているクエリはそうではありません。これは単純化されたバージョンです。
MySQL 5.0.22 を使用。