简单点,直接跑sql语句就能发现区别
employee表:
使用count(*)和count(id)跑一下看看有啥区别
SELECT COUNT(employee_id) AS 'count(id)' ,
COUNT(employee_name) AS 'count(name)' ,
COUNT(employee_age) AS 'count(age)' ,
COUNT(*) 'count(*)'
FROM employee;
在结合一下原始表,可以的分析得到结论:
总结下:
count( * )是统计总条数,只要表中有一行有数据了,就会加一,所以COUNT( * )输出了12条数据。
count(id) 这种操作,就是指定列名作为参数,就会统计指定列 不为 null 的行数,所以 才会 age = 10 。而name = 11 ,id = 12
count(*)和count(id),其实两种方法都是全局扫描,不考虑索引,count(id)需要过滤id为null的,会稍微慢一点。但其实总的来说是一个量级的。