2013年12月12日 星期四

[程式語言]SQL語法:Count(*),Count(1),Count(column)

再前一家公司時,所學到的計算資料筆數的方法是使用Count(*),新公司則是看到多為Count(1),心中自然有點疑惑,便來查查吧

簡而言之
Count(*)等於Count(1),計算全部的筆數也包含空值
Count(column)會排除掉空值,也因為排除空值的動作,一般而言速度較慢,除非這個column剛好有建立index

Count(1)不代表是Count第一個Column的數目,所以第一個Clumn裡面是否有空值不會有影響

另外
如果是對特定的column做count的話,建立這個列的非聚集索引能對count有很大的幫助。
如果經常count(*)的話,則可以找一個最小的column建立非聚集索引以避免全表掃描而影響整體性能。

沒有留言:

張貼留言