SQL中count(*)和count(1)的區別


要想弄清楚這個問題,那就得先搞清楚COUNT()函數,COUNT()函數可以有如下幾種用法:

1、SELECT COUNT(字段名) FROM 表名;

  解釋:統計該字段名不為null的數據總數。

2、SELECT COUNT(*) FROM 表名;

  解釋:統計該數據表中數據總數。

3、SELECT COUNT(1) FROM 表名;

  解釋:統計該數據表中數據總數。

COUNT(*)和COUNT(1)的區別:

  這倆種方式都可以用來統計表中總數據量,但是他們的實現方式略有不同。

  •   COUNT(*)是統計表中的行(該行數據同時都不為null)的數據總量,也就是說如果有一行所有數據都為null,那么就不會被統計。
  •   COUNT(1)是通過在該表的表結構中添加一列,該列的數據都為1,最終是通過統計該列中有多少個數據為1的數量,即為數據總數。

  在效率方面:

  •   MYISAM存儲引擎中,count(*)的效率高,因為該存儲引擎中有數據計數器,直接可以獲取數據總量;
  •   INNODB存儲引擎中,count(*)和count(1)效率差不多,都比COUNT(表名)效率高(因為該方式得判斷字段值是否為null);


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM