count查询详解

1 MyISAM表count查询
  • MyISAM表总记录数在INFORMATION_SCHEMA.TABLES

  • 进行不带条件的count查询不需要进行扫描

2 InnoDBcount查询
  • InnoDB记录也在INFORMATION_SCHEMA.TABLES
  • 但是由于InnoDB支持事务处于不同状态连接行数不一样的
  • 所以进行count查询还是需要进行扫描进行计数

  • count(1) 查询
    • 选择最小索引扫描查询
    • 为什么选择最小索引因为索引单个数据容纳数据条数需要扫描数据变小了

  • count(*) 查询,与count(1)一致

  • count(字段)查询,当字段null统计

  • count(主键字段)查询时,count(1)一致

  • count(非主键索引字段)查询时,走当前索引查询

  • count(非索引字段)查询全表扫描查询

由上可知count查询性能依次

count(1) = count(*) = count(主键) >= count(非主键索引) > count(非索引字段)

3 count查询优化

MyISAM直接查询无需优化

InnoDB对于总行精确度要求不高的可以采取以下优化手段

  • 查询INFORMATION_SCHEMA.TABLES统计信息
  • 执行show table status 查看

  • 记录数维护redis
  • 增加数据计数
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值