为什么mysql优化器选择了聚集索引
发表于:2025-02-03 作者:千家信息网编辑
千家信息网最后更新 2025年02月03日,本篇内容介绍了"为什么mysql优化器选择了聚集索引"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!通
千家信息网最后更新 2025年02月03日为什么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安全错误
数据库的锁怎样保障安全
网络安全保障体系文档
好有服务器
工业数据库识别
谁的网络安全好
360网络安全学院电话
传奇4如何查找登录的服务器
服务器接收上传数据
年纪对软件开发应聘
杭州冠腾网络技术
在服务器上能看到源码吗
清远dna打拐数据库
浙江集装客互联网科技
软件开发很难嘛
网络安全博览会3021
数据库左连接右连接
光网络软件开发待遇
顺丰速运软件开发商
数据库删除行后id乱了
网络安全人员配备
数据库连接成功报错1045
服务器公网私网怎么验证
网络技术大学生面试
有什么自学数学软件开发
河北超频服务器推荐厂家
路由器服务器无响应
软件开发公司列表
刺激战场大洋洲服务器
网络安全股研发费用
软件开发有关自媒体
孤儿药与罕见病数据库