MySQL count(*)之索引选择
发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,覆盖索引对于一些统计问题,如下:MySQL > show create table test1 \G*************************** 1. row ***************
千家信息网最后更新 2026年11月01日MySQL count(*)之索引选择
覆盖索引对于一些统计问题,如下:
MySQL > show create table test1 \G*************************** 1. row *************************** Table: test1Create Table: CREATE TABLE `test1` ( `id` bigint(16) NOT NULL AUTO_INCREMENT, `order_seq` bigint(16) NOT NULL, PRIMARY KEY (`id`), KEY `idx_id` (`id`), KEY `idx_id_ordseq` (`id`,`order_seq`)) ENGINE=InnoDB AUTO_INCREMENT=15002212 DEFAULT CHARSET=utf8mb41 row in set (0.00 sec)MySQL > explain select count(*) from test1 where id>10000 and id<20000;+----+-------------+-------+------------+-------+------------------------------+--------+---------+------+------+----------+--------------------------+| id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra |+----+-------------+-------+------------+-------+------------------------------+--------+---------+------+------+----------+--------------------------+| 1 | SIMPLE | test1 | NULL | range | PRIMARY,idx_id,idx_id_ordseq | idx_id | 8 | NULL | 9999 | 100.00 | Using where; Using index |+----+-------------+-------+------------+-------+------------------------------+--------+---------+------+------+----------+--------------------------+1 row in set, 1 warning (0.00 sec)
innodb存储引擎选择了id字段的辅助索引,而不是聚集索引来统计,更不是联合索引。原因是辅助索引远小于聚集索引,选择辅助索引可以减少IO资源消耗。
而另外一个统计场景:
select count(*) from test1 where order_seq > 1502131212577 and order_seq< 202007080947244761;
test1表建有id和 order_seq 字段的联合索引。
MySQL > show create table test1 \G*************************** 1. row *************************** Table: test1Create Table: CREATE TABLE `test1` ( `id` bigint(16) NOT NULL AUTO_INCREMENT, `order_seq` bigint(16) NOT NULL, PRIMARY KEY (`id`), KEY `idx_id` (`id`), KEY `idx_id_ordseq` (`id`,`order_seq`)) ENGINE=InnoDB AUTO_INCREMENT=15002212 DEFAULT CHARSET=utf8mb41 row in set (0.00 sec)MySQL > explain select count(*) from test1 where order_seq > 1502131212577 and order_seq< 202007080947244761;+----+-------------+-------+------------+-------+---------------+---------------+---------+------+----------+----------+--------------------------+| id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra |+----+-------------+-------+------------+-------+---------------+---------------+---------+------+----------+----------+--------------------------+| 1 | SIMPLE | test1 | NULL | index | NULL | idx_id_ordseq | 16 | NULL | 15068082 | 11.11 | Using where; Using index |+----+-------------+-------+------------+-------+---------------+---------------+---------+------+----------+----------+--------------------------+1 row in set, 1 warning (0.00 sec)
这里使用条件 order_seq 查询,一般情况下使用不了联合索引的,但是这个案例中的查询,利用到覆盖索引的信息。possible_keys依然为null,但是key是idx_id_ordseq,extra里出现Using index,表示为覆盖索引。
索引
统计
联合
辅助
选择
字段
查询
信息
原因
场景
引擎
情况
条件
案例
资源
问题
存储
消耗
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
互联网科技名片
互联网巨头反垄断金融科技
互联网 科技
互联网金融 金融科技
青岛互联网科技公司
互联网与新科技
互联网科技视频
猫创互联网科技
西藏七维空间互联网科技有限公司
隆华科技工业互联网
互联网科技公司实习生
坤平互联网科技
互联网公司黑科技创始人
烟台灵鸽互联网科技有限公司
工业互联网展湾科技股份有限公司
中国互联网有什么科技
领航科技大厦互联网公司
互联网科技融合创新
互联网科技企业商标注意事项
保山浩联互联网科技有限公司
互联网高科技
科技赋能下的互联网金融
互联网科技有限公司经营范围
北京互联网科技公司
未来的互联网科技
润盈互联网科技
卫星互联网科技股票
互联网科技大奖都有哪些公司
无锡工业互联网科技有限公司
互联网高科技行业有哪些企业