可以看到,Group By更快。 综上所述,其他条件一定时,数据重复项越多,distinct效率越高,反之,数据越唯一,group by效率越高。(测试用例较少,时间差距其实不明显,受电脑影响,数据有时不准。所以具体数据具体试验,不要盲目使用,人云亦云。) 原因: distinct需要将列中的全部内容都存储在一个内存中,可以理解为一个has...
distinct简单来说就是用来去重的,而group by的设计目的则是用来聚合统计的,两者在能够实现的功能上有些相同之处,但是2者的性能差距很大 对于一个84万数据量的表,count(distinct(XXX))的查询需要20s,而group by仅需1s,性能相差20倍 原理分析: distinct方式就是两两对比,需要遍历整个表,大多数情况下都会导致对最终...
原因是distinct 和 group by都会进行分组操作,但group by可能会进行排序,触发filesort,导致sql执行效率低下。...接下来,我们先来看一下distinct和group by的基础使用。...DISTINCT和GROUP BY都是可以使用索引进行扫描搜索的。...因为group by和di...
后面应该加上 order by null;避免无用排序,但其实对结果耗时影响不大,还是很慢。 思路二: where条件太复杂,没索引,导致查询慢,但我给where条件的所有字段加上了组合索引,也还是没用。 思路三: 既然group by慢,换distinct试试??(这里就是本篇博客里说的神奇的地方了)。 卧槽???!!!这是什么情况,瞬间这么快...
后面应该加上 order by null;避免无用排序,但其实对结果耗时影响不大,还是很慢。 思路二: where条件太复杂,没索引,导致查询慢,但我给where条件的所有字段加上了组合索引,也还是没用 思路三: 既然group by慢,换distinct试试??(这里就是本篇博客里说的神奇的地方了) ...
后面应该加上 order by null;避免无用排序,但其实对结果耗时影响不大,还是很慢。 思路二: where条件太复杂,没索引,导致查询慢,但其实哪怕where条件不动,只要把group by去掉,就非常快。所以应该也不是where条件的问题。 思路三: 既然group by慢,换distinct试试??(这里就是本篇博客里说的神奇的地方了) ...
后面应该加上 order by null;避免无用排序,但其实对结果耗时影响不大,还是很慢。 思路二: where条件太复杂,没索引,导致查询慢,但我给where条件的所有字段加上了组合索引,也还是没用 思路三: 既然group by慢,换distinct试试??(这里就是本篇博客里说的神奇的地方了) ...
两者功能完全不同,简单讲,distinct的功能是去重,group by的功能是分组,通常配合聚合函数,如sum(),avg(),max(),min()等一起使用 而distinct则是取不同的值,通过对数据两两进行比较,最终去掉重复的值 总结 在实际使用时,group by和distinct都可以实现单列去重及多列去重的功能,但在功能上,group by可以实现分组...
explain下index查询,平均查询时间 ~=32s 基本没有变,看来DICTINCT并不走索引 综上总结: 1、索引能大大提高sql搜索速度 2、‘count(*)经过mysql的自优化,会自动寻找索引,好像是主键的索引。能大大提高搜索速度。 3、DISTINCT并不会走索引,group by才会走索引©...