汇总表优化疑问
来源:7-7 特定SQL的查询优化

hjack315
2018-10-19
从执行的角度上看,该语句只需要扫一次大表 SELECT COUNT() FROM product_comment WHERE product_id=999;而
SELECT SUM(cnt) FROM(
SELECT cnt FROM product_comment_cnt WHERE product_id = 999
UNION ALL
SELECT COUNT() FROM product_comment WHERE product_id = 999 AND timestr>DATE(NOW())
) a
从里向外要执行3次,优化的点在哪?
直接 SELECT COUNT(*) FROM product_comment WHERE product_id = 999 AND timestr>DATE(NOW()) 使用覆盖索引难道不行吗,为什么要执行那么多子查询。
没有看懂啊老师,麻烦指点下。
写回答
1回答
-
sqlercn
2018-10-19
第一种方式要对大表进行扫描,而第二种方式利用了统计表,并不需要对大表进行扫描,只需要通过索引把统计表之后产生的评论数量进行统计就可以了。
00
相似问题