私のクエリは次のようなものです:
SELECT date_format( created_at, '%Y-%m-%d' ) AS the_date,
COUNT(s.id) AS total,
(SELECT COUNT(ks.id) FROM kc_shares ks WHERE site = 'facebook' AND date_format( created_at, '%Y-%m-%d' ) = the_date ) AS total_facebook,
(SELECT COUNT(ks.id) FROM kc_shares ks WHERE site = 'twitter' AND date_format( created_at, '%Y-%m-%d' ) = the_date ) AS total_twitter
FROM `kc_shares` s
GROUP BY `the_date`
私が取得したいのは、合計、facebook への合計共有 (したがって、サイト = 'facebook') および twitter への合計共有の指定による毎日の共有の数です。それが私が必要な理由ですGROUP BY
。
数千行の場合は問題ありません。しかし、テーブルには現在ほぼ 200,000 行あり、クエリは非常に遅く、約 20 ~ 30 秒かかります。
site および created_at フィールドにインデックスを追加しようとしましたが、役に立ちませんでした。
ありがとう