質問は、リスト データとリード データを 2 つのテーブルに保持するリスト サイトに関するものです。リスティングと各リスティングの合計リード数のクエリを実行すると、ORDER BY を追加した後、結果が非常に遅くなります。ORDER BY を使用しないと、結果は非常に高速に取得されます。以下のクエリの再構築に関するアドバイスやヘルプは素晴らしいでしょう!! 参考までに、20,000 件のリストと 100,000 件のリードがあります。
SELECT ls.*, IFNULL(ld.total_leads, 0) AS total_leads
FROM listing ls
LEFT JOIN (SELECT listing_id, COUNT(listing_id) AS total_leads
FROM lead GROUP BY listing_id) ld
ON (ls.listing_id = ld.listing_id)
ORDER BY ls.listing_id DESC LIMIT 0,20
説明:
id select_type table type pos key ke ref rows Extra
1 PRIMARY ls ALL NULL NULL NULL NULL 17215 Using temporary; Using filesort
1 PRIMARY 2> ALL NULL NULL NULL NULL 12865
2 DERIVED lead ALL NULL NULL NULL NULL 117830 Using temporary; Using filesort