【JAVA面試】—01阿里規(guī)范為什么禁止使用 count(列名)或 count(常量)來替代 coun(*)

1、我們先用一組數(shù)據(jù)測試一下幾個的區(qū)別
首先,先創(chuàng)建一張表 ,主鍵id、int 類型的字段id2、varchar 類型的字段name
在往表里面插入七條數(shù)據(jù),如下
用不同的語句測試如下
返回結(jié)果7
返回結(jié)果7
返回結(jié)果1
?返回結(jié)果2
從以上測試結(jié)果可以總結(jié)如下
2、性能方面
mysql 官網(wǎng)給出的解釋
2.1、當(dāng)字段為主鍵情況下:
2.2、當(dāng)字段為非主鍵(常規(guī)字段)情況下:
count(*)?和count(1)性能一致,為什么還是要使用count(*)?因為Count(*) 是SQL92定義的標(biāo)準(zhǔn)統(tǒng)計行數(shù)的語法,跟數(shù)據(jù)庫無關(guān),遵守SQL規(guī)范,當(dāng)數(shù)據(jù)庫版本優(yōu)化之后,代碼不用修改,可以一勞永逸
本片文章配有專門視頻講解?【JAVA面試】—01阿里規(guī)范為什么禁止使用 count(列名)或 count(常量)來替代 coun(*)
標(biāo)簽: