0
点赞
收藏
分享

微信扫一扫

MySQL COUNT 函数及其优化

鲤鱼打个滚 2022-02-26 阅读 116

1、 count()的作用

数,既可以统计某个列的数量又可以统计行数。

  1. 统计列Count(col_name),只统计非NULL列( c o u n t ( c o l ) N U L L );如果列为非空会优化器会将Count(col_name)转换为Count(*)

  2. 统计行Count(*),统计结果集的行数。

2、 * 

不是的,使count(*)*;count(col),当col为非空列时,会转换成count(*)。

3、 count() innodbmyisam

     class_videoclass_video_isam, class_videoinnodb,class_video_isammyisam

class_video

 

class_video_isam:

3162560300 select count(*) from class_video  select count(*) from class_video_isam:

 

myisam0.001s,innodb23.381s


myisaminnodbmyisamwhere,select count(*) from class_video_isam where course_id=1540;

 

33.522

 


4、 

4.1 innodb count(*) where 

  • 使存。

4.2 where

  • 数。

  • 表。

  • 如果业务可以接受,那么使用近似行,近似行采用EXPLAIN语句,优化器会预估一个行数。

  • 使用缓存。

5、  总结

  1. 行数统计使用Count(*),统计列使用Count(col_name),如果col_name定义为非NULL,那么优化器会自动将Count(col_name)转换为Count(*)。

  2. MyISAM和InnoDB计数略有不同,MyISAM直接存储了行数,所有全表行数统计非常快,而InnoDB需要扫描整张表。

  3. 优化Count()主要是减少结果集扫描行数,比如:总是使用小的结果集;使用近似值(避免扫描);使用缓存;定时更新;汇总表。

  4. 优化Count()还可以组合以上的方式,比如:定时更新,将汇总更新到汇总表,然后将汇总表内容写入缓存。

6、  参考

  1. 高性能MySQL(第三版)

举报

相关推荐

0 条评论