select count(1)或select count(*)
1、select 1 与 select *的区别
??? selelct 常量 from ... 对应所有行,返回的永远只有一个值,即常量 。所以正常只会用来判断是否有还是没有(比如exists子句)。而select * from ... 是返回所有行的所有列。
??? 性能上的差异,关键看你的from和where子句。比如说如果你的where条件中可以通过索引,那显然 select 1 from ... 的性能比 select * from ... 好。
2、select count(1)与select count(*)的区别
?? 跟表结构有关系:
?? 如果表中没有主键,那么count(1)比count(*)快
?? 如果有主键,那么count(主键,联合主键)比count(*)快
?? 如果表中只有一个字段,count(*)最快
3、select sum(1)的使用
?? select count(*)返回所有满足条件的记录数,此时同select sum(1)
?? 但是sum()可以传任意数字,负数、浮点数都可以,返回的值是传入值n*满足条件记录数m