このクエリをどのように動作させるかを理解するのに苦労しました。今すぐ動作するクエリがあるので、時間がかかりすぎます。mysqlクエリは300秒以上の時間を要し、20秒以上のフェッチを行い、スキーマ内の行数はわずか500,000です。
誰も私が同じ検索結果を達成するためのより良い、より速い方法を理解する助けになるでしょうか?
select
a.customer_id,
a.id aid,
p.id payid,
p.amount
from
agreement a
left join
payment p
on
a.customer_id = p.customer_id
where
p.customer_id is null
and a.campaign = "vsf"
and a.customer_id in
(SELECT a1.customer_id
FROM agreement a1
GROUP BY a1.customer_id
HAVING COUNT(a1.id) >= 2)
あなたは 'customer_id'と' campaign'のインデックスを作成しましたか?パフォーマンスに関する質問には、 'EXPLAIN ANALYZE'とテーブルサイズ、インデックス、現在の時間パフォーマンス、欲求時間などに関する情報が含まれていなければなりません。'スロー 'は相対的な用語であり、比較するには本当の価値が必要です。 \t \t [** MySQL **](http://dba.stackexchange.com/questions/15371/how-do-i-get-the-execution-plan-for-a-view) –
あなたは ' SELECT 'を実行すると、500k * 500kの操作(250,000 000 000)が発生します。 – Blaztix
このクエリの実行計画(EXPLAIN)を指定します。 –