Group By为什么效率低,内存操作更好吗?
来源:5-25 【扩展与练习】关于 MySQL 索引的介绍及作业

takooya
2019-03-09
Group By为什么效率低?
那将数据全量查出后,在程序中处理,这种方式好吗?
能讲一下group by的常用优化方案吗?
额外问一个问题,当我去判断一个数据是否存在最好的sql语句是什么?
select 1 from 表 where 非索引字段 = ‘value’ limit 1
还有更好的方法吗?
写回答
1回答
-
同学你好:
为什么 group by 的效率比较低?
group by 是将数据分组,这其中实际也会涉及到排序的操作。如果你的数据量很大,那么,这个排序过程可能是非常慢的。所以,排序的过程会降低 SQL 语句的执行效率。
将数据全量查出,在程序中处理,这样好吗?
这样肯定是不合适的。因为这样做:大数据量的传输很耗时、消耗机器的内存、大数据量的处理本身也非常慢。
group by的常用优化方案
效率低的根本原因就是因为数据量大导致的,所以,想要做优化,核心思想就是降低数据量。可以在 group by 之前把需要过滤的数据通过 where 条件给出;给 group by 的相关字段加上索引等等。
判断一条数据记录是否在一张表中
这个判断最高效的方式当前是判断主键;如果不能通过主键判断,需要 where 去查询带有索引的字段列;如果需要判断的列没有索引,mysql 是需要扫描数据记录的,效率最低。
欢迎来 QQ 群随时交流、讨论,也非常感谢同学的支持!
70
相似问题