标签:col opera sql span 效率 字段 com select val
有时候总认为count(*)会比count(1)或者count(column name)慢,事实上是分情况处理。
比如:
---初始化语句
建立一张表并插入数据:
create table test2 (id BIGINT PRIMARY key, name varchar(24))ENGINE=INNODB;
insert into test2(id,name)values(1,null);
insert into test2(id,name)values(2,‘name1‘);
insert into test2(id,name)values(3,‘name2‘);
执行下面的select语句:
select count(*) from test2 ; //结果是:3
select count(id) from test2 ; //结果是:3
select count(name) from test2 ; //结果是:2
select count(name) from test2 where name is null; //结果是:0
count(1)指的并不是计算1的个数,而是指表的第一个字段,如果第一个字段没有建立索引,他的效率是很低的;
而且count(column name)默认查询的是指定字段非空的个数,如果你想查询数据的所有行数,恰巧指定字段又是
一个可存在空库数据的字段,那么得到的数据就不会是期望的值。再来说一下count(),在上述的count(column name)
查询方式中,如果指定的column为限制为非空,那么mysql会将上述表达式转化为count()来进行查询。所以如果想
要查询数据大小,在mysql中建议使用count(*)来执行,含义明了,速度还快。
标签:col opera sql span 效率 字段 com select val
原文地址:http://www.cnblogs.com/aizj/p/7603333.html