为什么mysql优化器选择了聚集索引
发表于:2025-11-17 作者:千家信息网编辑
千家信息网最后更新 2025年11月17日,本篇内容介绍了"为什么mysql优化器选择了聚集索引"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!通
千家信息网最后更新 2025年11月17日为什么mysql优化器选择了聚集索引
本篇内容介绍了"为什么mysql优化器选择了聚集索引"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
通过这个以下这个案例,来说明优化器在选择索引时候的取舍。
查看表结构:
MySQL > show create table test2 \G*************************** 1. row *************************** Table: test2Create Table: CREATE TABLE `test2` ( `id` bigint(16) NOT NULL AUTO_INCREMENT, `order_seq` bigint(16) NOT NULL, `order_type` int(11) DEFAULT NULL, `order_flag` int(11) DEFAULT NULL, PRIMARY KEY (`id`), KEY `idx_id` (`id`), KEY `idx_id_orderseq` (`id`,`order_seq`)) ENGINE=InnoDB AUTO_INCREMENT=15002212 DEFAULT CHARSET=utf8mb41 row in set (0.00 sec)
查询一:
MySQL > explain select id,order_seq from test2 where id>10000 and id<20000;+----+-------------+-------+------------+-------+--------------------------------+-----------------+---------+------+-------+----------+--------------------------+| id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra |+----+-------------+-------+------------+-------+--------------------------------+-----------------+---------+------+-------+----------+--------------------------+| 1 | SIMPLE | test2 | NULL | range | PRIMARY,idx_id,idx_id_orderseq | idx_id_orderseq | 8 | NULL | 18484 | 100.00 | Using where; Using index |+----+-------------+-------+------------+-------+--------------------------------+-----------------+---------+------+-------+----------+--------------------------+1 row in set, 1 warning (0.00 sec)
优化器选择idx_id_orderseq,在意料之中,因为查询字段为id,order_seq,可以利用覆盖索引。
查询二:
MySQL > explain select * from test2 where id>10000 and id<20000;+----+-------------+-------+------------+-------+--------------------------------+---------+---------+------+-------+----------+-------------+| id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra |+----+-------------+-------+------------+-------+--------------------------------+---------+---------+------+-------+----------+-------------+| 1 | SIMPLE | test2 | NULL | range | PRIMARY,idx_id,idx_id_orderseq | PRIMARY | 8 | NULL | 19122 | 100.00 | Using where |+----+-------------+-------+------------+-------+--------------------------------+---------+---------+------+-------+----------+-------------+
优化器选择了id字段的聚集索引。因为是select *,所以优化器没有选择索引idx_id_orderseq(id,order_seq),id字段的聚集索引(主键)和辅助索引idx_id,优化器是怎么选择的呢?
如果选择辅助索引idx_id,查询到具体id之后,还要回表查到整行的数据信息,虽然id字段是有序的,但是回表查询的数据是无序的,因此变成了磁盘上的离散操作,离散读取比顺序读取性能消耗高的多,所以会选择聚集索引。
"为什么mysql优化器选择了聚集索引"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!
索引
选择
查询
字段
内容
数据
更多
案例
知识
离散
辅助
实用
有序
学有所成
接下来
之中
信息
困境
实际
性能
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
c 输入所以测试数据库
服务器产品任务包装清单
服务器的视频插口在哪里
信息保密及网络安全协议
搭建官网需要服务器吗
濮阳软件开发要多少钱
宝德服务器管理系统用户名
惠普服务器g6磁盘阵列
巩义市荣邦网络技术服务有限公司
用友t3数据库文件夹
慈溪ios软件开发服务
我的世界服务器指南针
数据库触发器应用
对日金融软件开发可0基础
大宗商品平台软件开发
网络技术面试评语怎么写
湖北服务器机柜推荐厂家
dump数据库的内部结构
数据库数据字典的设计
安卓软件开发编程
access软件开发平台
短链接 服务器
.net云服务器
未来想做什么计算机网络技术
上海交友软件开发价钱是多少
公安机关的网络安全与执法
刷卡机连接不到服务器怎么回事
湖北服务器机柜推荐厂家
服务器本地管理员在哪
计算机网络技术的学校排名