数量查询时,有如下几种方式:
1.下面三种方式,在多数情况下效率是基本相同的,但问题在于,很多情况下,我们数据库可能有脏数据,比如重复数据,或者某条数据重要字段是null的,那下面的这几种,会把这种脏数据也统计上,本质都是统计满足条件的行数的:
2.如果有一张字段很多的表,比如user表,第2个字段是user_name ,第20个字段是school_major,那么下面第一条会比第二条快很多,经过测试,字段在表中越靠后,count时效率越低:
3.如果count(column),这个column是建了索引的,那么速度会比没有建立索引的快很多
4.使用count(column)时,一定要注意思考业务逻辑,比如说,查询user表中一共有多少人:
很多人上来就
这时候,如果数据库中出现同一条记录出现了两遍呢?如果某条记录user_name是空的呢?那下面三种写法,出现的结果就完全不同了:
这是查询这张表的总行数,重复的和null的都算进去。
这是查询这张表中user_name不为空的行数。
这是查询这张表中,user_name有多少不重复的行,null的也会被统计为一行。
以上数据,是在mysql数据库,100万条数据,200万条数据,和300万条数据下做出验证的。