count(1)、count(*)和count(主键)的区别
count(1)和count(主键) :只扫描主键
count(*):扫描表
所以count(1)和count(主键)这两个效率高 (count(ROWID)也只扫描主键,效率高。)
表做过分析后,<1W或>10W数据count(1) > count(*) ,1W<数据<10W,count(*) > count(1)
所以总的感觉,count(1)比count(*)效率高些。
没主键时,count(1) > count(*)
有主键时,count(联合主键) > count(*)
表只有一个字段,count(*)最快了。
总结:因为系统会对count(*)做优化,所以它们之间差别不大,推荐用count(*)
站外扩展:
count(*),count(1)和count(主键)的区别