到底應該使用count(*) 還是count(1)

    關於count方法一直存在爭議,count(*)、count(列名)count(常量),到底應該使用哪個?我認爲應該是count(*),count(*)SQL92定義的標準統計數的方法。我曾經有幸閱讀過阿里巴巴的開發規範,裏面提到強制使用count(*)。

      我通過以下四個查詢命令來說明三個方法的區別:

     1.select count(*) from emp;
     2.select count(1) from emp;
     3.select count(job) from emp;
     4.select count(*) from emp where jobis not null;

      第一條命令查出的結果是員工的數量。

      第二條命令查出的結果是員工的數量。

      第三條命令查出的結果是工種不爲空的員工的數量。

      第四條命令查出的結果是工種不爲空的員工的數量。

      顯然,第一條與第二條的效果相同,第三條與第四條的效果相同。

    至於1,2爲什麼選擇1,因爲1大家都能看懂,2已經不止一個人問過我是什麼意思。至於3,4爲什麼選擇4,因爲4大家都能看懂,3會給不同的讀者帶來不同的理解。

       有部分人可能會說count(*)沒有count(1)的效率高,我在一張包含33554432條記錄的表中,使用count(*)和count(1)測試,所消耗的時間都是34秒之間。

       所以,大家完全可以不要因爲效率問題而選擇使用count(1)了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章