これは私が書いた SQL クエリです。正常に動作しますが、遅いです。
SELECT D.Username,
SUM(CASE WHEN D.type = 'Yes' THEN 1 ELSE 0 END) as Yes,
SUM(CASE WHEN D.type = 'No' THEN 1 ELSE 0 END) as No,
SUM(CASE WHEN D.type = '' THEN 1 ELSE 0 END) as Other,
SUM(CASE WHEN S.mobile IS NULL THEN 0 ELSE 1 END) as Sales,
COUNT(*) as TOTAL FROM dairy as D
LEFT JOIN (SELECT DISTINCT mobile FROM sales) as S on D.MobileNo = S.mobile
WHERE source = 'Network' AND UNIX_TIMESTAMP(CheckDate) >= 1309474800 AND UNIX_TIMESTAMP(CheckDate) <= 1309561200
group by D.Username order by TOTAL DESC
ご覧のとおり、はい、いいえ、その他、および一致する MobileNo ( D.MobileNo = S.mobile
) 販売の数をカウントします。
タイプ、ユーザー名、モバイル、MobileNO、CheckDate、およびソースにインデックスを追加しようとしましたが、パフォーマンスはあまり向上しませんでした。