SQL-去重Groupby和Distinct的效率
经实际测试,同等条件下,5千万条数据,Distinct⽐Group by效率⾼,但是,这是有条件的,这五千万条数据中不重复的仅仅有三⼗多万条,这意味着,五千万条中基本都是重复数据。英语四级试卷
为了验证,重复数据是否对其有影响,本⼈针对80万条数据进⾏测试:
汶川大地震是哪一年
下⾯是对CustomerId去重,CustomerId的重复项及其多,80万条中仅仅50条不重复的。可以看到,Distinct快⼀点。
家校联系记录⽤例1:
⽤例2:
调解协议书范本
简单的自书遗嘱范文下⾯是对Id去重,Id基本唯⼀,80万条中没有重复的。可以看到,Group By更快。
综上所述,其他条件⼀定时,数据重复项越多,distinct效率越⾼,反之,数据越唯⼀,group by效率越⾼。(测试⽤例较少,时间差距其实不明显,受电脑影响,数据有时不准。所以具体数据具体试验,不要盲⽬使⽤,⼈云亦云。)
原因:
distinct需要将列中的全部内容都存储在⼀个内存中,可以理解为⼀个hash结构,key为列的值,最后计算hash结构中有多少个key即可得到结果。
科目4答题技巧很明显,需要将所有不同的值都存起来,因此重复数据越多,需要存储的不同项也越少。但这种⽅式内存消耗可能较⼤,看你电脑。
汪蕊⽽group by的⽅式是先将列排序。⽽数据库中的group⼀般使⽤sort的⽅法,即数据库会先对列进⾏排序。⽽排序的基本理论是,时间复杂为nlogn,空间为1.,然后只要单纯的计数就可以了。优点是空间复杂度⼩,缺点是要进⾏⼀次排序,执⾏时间会较长。
两中⽅法各有优劣,在使⽤的时候,我们需要根据实际情况进⾏取舍,不要⼀⼑切。英语四级官网