count函数优化
使用近似值:
在某些应用场景中,不需要完全精确的值,可以参考使用近似值来代替,比如可以使用explain来获取近似的值。其实在很多OLAP的应用中,需要计算某一个列值的基数,有一个计算近似值的算法叫做HyperLogLog。
更复杂的优化:
一般情况下,count()需要扫描大量的行才能获取精确的数据,其实很难优化,在实际操作的时候可以考虑使用索引覆盖扫描,或者增加汇总表,湖畔这增加外部缓存系统。
count(1)/count(*)/count(列名)的区别
一句话概括:在执行效率上,这三种没区别!!!有图有真相——
不要再说出count(1)比count(*)快这么low的话了!!!
count(1):
count(列名):
count(*):
再来看看执行时间:
如果存在列为null的情况,count(列名)不会统计为null的列,其他两种会统计为null的数据。