MySQL COUNT函数优化及count(1)/count(*)/count(列名)的区别
生活随笔
收集整理的這篇文章主要介紹了
MySQL COUNT函数优化及count(1)/count(*)/count(列名)的区别
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
count函數優化
使用近似值:
在某些應用場景中,不需要完全精確的值,可以參考使用近似值來代替,比如可以使用explain來獲取近似的值。其實在很多OLAP的應用中,需要計算某一個列值的基數,有一個計算近似值的算法叫做HyperLogLog。
更復雜的優化:
一般情況下,count()需要掃描大量的行才能獲取精確的數據,其實很難優化,在實際操作的時候可以考慮使用索引覆蓋掃描,或者增加匯總表,湖畔這增加外部緩存系統。
?
count(1)/count(*)/count(列名)的區別
一句話概括:在執行效率上,這三種沒區別!!!有圖有真相——?
不要再說出count(1)比count(*)快這么low的話了!!!
?count(1):
?count(列名):
?
count(*):
再來看看執行時間:
?如果存在列為null的情況,count(列名)不會統計為null的列,其他兩種會統計為null的數據。
總結
以上是生活随笔為你收集整理的MySQL COUNT函数优化及count(1)/count(*)/count(列名)的区别的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MySQL排序优化(两次排序和单次排序)
- 下一篇: MySQL优化关联查询