1。测试环境

操作系统:Linux
DB:mysql-5.5.18
表:InnoDB存储引擎

表的定义如下:



2。测试场景分析表group_message记录{数量}

(1)select count(*)的方法



(2)选择计数(1)模式



(3)选择计数(col_name)模式

单独使用

select count(group_id)

select count(user_id)

select count(col_null)



从上面的测试结果,你可以看到,select count(*)和数量(1)用最短的两水平指数group_id.some人会问为什么不使用较短的主键索引} { int类型,这主要是因为主键索引基本上包含在InnoDB存储引擎的索引和数据。扫描主键索引实际上是扫描物理记录,和成本是最重要的。看看几个select count(col_name),计数(group_id)使用最少的两级索引,因为索引列的列数;及(user_id)是复合索引的使用,因为user_id不能使用索引的本质,还可以记录扫描索引的数量,和扫描比物理记录的低价格,应该有一个MySQL优化;计数(col_null)无法使用索引,因为该列包含空值,这样的效率是最低的。此外,空含行计数(col_null)将不被计算在内,这将与原有的一些意图不一致要记录的记录。例如,在测试表有852226个记录,但在col_null柱只有1行不空。



三.试验结论

在MySQL数据库中,当你需要记录的选择计数统计数,使用计数(*)或计数(1)。