count(*)与count(1)、count('xxx')等在使用语法方面的区别
语法方面:
区别就是:没有区别!!!
“*”号是通配符;
“*”号是通配符
“*”号是通配符
使用"*"号和使用其他数字和任意非字段字符在使用方面没有任何语法错误;
至于效率方面是否有区别,尚未研究。以下摘自网络
count 解释
count(*) 返回表中所有存在行的总数包括null;处理count(*)的时候只需要计算一下行数就行了,不用去读取里面数据列的数据。
count(1) 返回的是去除null以外的所有行的总数,有默认值的也会被记录;必须读取该colum的每一行的值,然后确认下是否为NULL,然后在进行计数。
因此count(*)应该是比count(1)或者count('xxx')快的;
最后总结三条经验,(网上看到的)
1.任何情况下select count(*) from table 最优选择
2.减少select count(*) from table where condition = ? 这样的查询
3.杜绝select count(colunm) from table