我正在努力使我的查询更有效率,因为它仍然很重,将来它会变得更糟。
这是我的问题:
SELECT SUM(fb_diff.shares) shares
FROM (
SELECT (SUM(fb.shares) - SUM(fbs.shares)) shares
FROM (
SELECT post_id, shares
FROM wp_facebook_total_stats
WHERE date = '2014-08-01 00:00:00'
GROUP BY post_id
) fbs
LEFT JOIN wp_facebook_total_stats fb ON fb.post_id = fbs.post_id
WHERE fb.date = '2014-09-28'
) fb_diff
它有效...我得到了数据......但是有没有办法在没有得到同一个表两次的情况下相同?
因为当我做EXPLAIN时,我得到了这个:
2 DERIVED fb ALL post_id NULL NULL NULL 588849 Using where
3 DERIVED wp_facebook_total_stats index post_id post_id 8 NULL 588849 Using where
答案 0 :(得分:0)
如果您试图根据不同的日期或失效时间来获取帖子共享之间的差异,并且不希望以递归方式连接到同一个表,我可以看到至少几个选项:
每个选项都有其优点和缺点,请仔细考虑。
希望这会有所帮助,祝你好运。