在数据表中记录了用户验证时使用的书目,现在想取出所有书目,用DISTINCT和group by都取到了我想要的结果,但我发现返回结果排列不同,distinct会按数据存放顺序一条条显示,而group by会做个排序(一般是ASC)。
DISTINCT 实际上和 GROUP BY 操作的实现非常相似,只不过是在 GROUP BY 之后的每组中只取出一条记录而已。所以,DISTINCT 的实现和 GROUP BY 的实现也基本差不多,没有太大的区别,同样可以通过松散索引扫描或者是紧凑索引扫描来实现。
那DISTINCT 和GROUP BY哪个效率更高?
DISTINCT操作只需要找出所有不同的值就可以了。而GROUP BY操作还要为其他聚集函数进行准备工作。从这一点上将,GROUP BY操作做的工作应该比DISTINCT所做的工作要多一些。
但实际上,GROUP BY 效率会更高点,为什么呢?对于DISTINCT操作,它会读取了所有记录,而GROUP BY需要读取的记录数量与分组的组数量一样多,也就是说比实际存在的记录数目要少很多。
例子 aa表 a b 123 10 123 12 1234 11 1234 14 首先 group 是用来分组的 不是过滤重复项的。重复项删除语句 DISTINCT用这个 。 select DISTINCT(a) from aa 结果就是 a 123 1234 group by用来分组的 select a, sum(b) from aa group by a sum意思是总和。结果就是 a b 123 22 1234 25 语句的目的是以a为目标 需要知道 相同名字的物品 在b列一共有多少数量总和 select a,count(b) from aa group by a count 意思行数总和 结果就是 a b 123 2 1234 2 语句目的是 相同名字的物品 一共有几行
MySQL中distinct和group by性能比较
http://zhangjiankun880.blog.163.com/blog/static/13554032011111953133404/