Innodb表select查询顺序

发布时间 - 2026-01-10 22:14:59    点击率:

今天知数堂一个学生反馈说在优化课中老师讲Innodb是以主键排序存储,读取的时间以主键为顺序读取,但发现个例外,如下:

CREATE TABLE zst_t1 ( 

uid int(10) NOT NULL AUTO_INCREMENT, 

id int(11) NOT NULL, 

PRIMARY KEY ( uid ), 

KEY idx_id ( id ) 

) ENGINE=InnoDB;'

写入数据:

INSERT INTO zst_t1 VALUES (1,1),(12,1),(22,1),(23,1),(33,1),(2,2),(3,2),(10,2),(11,2),(4,4),(13,4),(14,4); 

执行查询:

select * from zst_t1;

为什么这个顺序是乱的,不按顺序排列呢?难道Innodb表并不是全按主键存储?

使用innodb_ruby这个工具查看一下存储结构什么样

看样子存储还是按主键排序存储的。没毛病。

再来看一下该表的索引:

看到这里应该明白了怎么会事了吧,原来这个查询是走的索引覆盖,没有在进行回表读取原数据。另外,也在此说明,Innodb二索索引包含了主键存储。

来继续证明一下:

看到using index 吧,表示这个查询利用索引查询出来结果,不用读取原表。

那么我们给造一个通过主键读取数据操作:

select * from zst_t1 use index(primary);

select * from zst_t1 use index(primary);  #确认一下。

总结:

这个其实就是一个索引包含的查询案例。 如果静下来思考一下,也许很快就明白了。也不用这样去查问题。

技术在于折腾,多搞搞就明白了:)。


# Innodb表  # select查询顺序  # 可以改善mysql性能的InnoDB配置参数  # MySQL Innodb表导致死锁日志情况分析与归纳  # mysql更改引擎(InnoDB  # MyISAM)的方法  # MySQL不支持InnoDB的解决方法  # Mysql启动中 InnoDB: Error: log file ./ib_logfile0 is   # 浅谈MySQL存储引擎选择 InnoDB与MyISAM的优缺点分析  # Xtrabackup使用指南 InnoDB数据备份工具  # MYSQL无法启动提示: Default storage engine (InnoDB) is no  # MySQL数据库INNODB表损坏修复处理过程分享  # 主键  # 明白了  # 在此  # 再来  # 看一下  # 事了  # 不按  # 去查  # 静下来  # 顺序排列  # 课中  # 包含了  # int  # uid  # id  # NULL  # AUTO_INCREMENT  # pre  # class  # 知数堂 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Win11怎么开启自动HDR画质_Windows11显示设置HDR选项  Laravel如何生成URL和重定向?(路由助手函数)  打造顶配客厅影院,这份100寸电视推荐名单请查收  html5怎么画眼睛_HT5用Canvas或SVG画眼球瞳孔加JS控制动态【绘制】  深圳网站制作的公司有哪些,dido官方网站?  如何在万网ECS上快速搭建专属网站?  什么是JavaScript解构赋值_解构赋值有哪些实用技巧  焦点电影公司作品,电影焦点结局是什么?  如何快速建站并高效导出源代码?  phpredis提高消息队列的实时性方法(推荐)  电商网站制作多少钱一个,电子商务公司的网站制作费用计入什么科目?  Laravel如何使用Laravel Vite编译前端_Laravel10以上版本前端静态资源管理【教程】  ,交易猫的商品怎么发布到网站上去?  Laravel如何优雅地处理服务层_在Laravel中使用Service层和Repository层  如何在阿里云通过域名搭建网站?  python中快速进行多个字符替换的方法小结  Laravel如何处理和验证JSON类型的数据库字段  PythonWeb开发入门教程_Flask快速构建Web应用  Laravel如何配置.env文件管理环境变量_Laravel环境变量使用与安全管理  网站制作软件有哪些,制图软件有哪些?  JavaScript 输出显示内容(document.write、alert、innerHTML、console.log)  Laravel中DTO是什么概念_在Laravel项目中使用数据传输对象(DTO)  独立制作一个网站多少钱,建立网站需要花多少钱?  Laravel的路由模型绑定怎么用_Laravel Route Model Binding简化控制器逻辑  详解MySQL数据库的安装与密码配置  Laravel怎么实现支付功能_Laravel集成支付宝微信支付  Thinkphp 中 distinct 的用法解析  如何将凡科建站内容保存为本地文件?  如何在宝塔面板中创建新站点?  javascript中的try catch异常捕获机制用法分析  香港服务器网站搭建教程-电商部署、配置优化与安全稳定指南  电视网站制作tvbox接口,云海电视怎样自定义添加电视源?  香港服务器部署网站为何提示未备案?  php在windows下怎么调试_phpwindows环境调试操作说明【操作】  Laravel Fortify是什么,和Jetstream有什么关系  详解Android中Activity的四大启动模式实验简述  微信小程序 wx.uploadFile无法上传解决办法  Win11怎么修改DNS服务器 Win11设置DNS加速网络【指南】  零基础网站服务器架设实战:轻量应用与域名解析配置指南  作用域操作符会触发自动加载吗_php类自动加载机制与::调用【教程】  如何用ChatGPT准备面试 模拟面试问答与职场话术练习教程  Windows11怎样设置电源计划_Windows11电源计划调整攻略【指南】  深入理解Android中的xmlns:tools属性  三星、SK海力士获美批准:可向中国出口芯片制造设备  大同网页,大同瑞慈医院官网?  bootstrap日历插件datetimepicker使用方法  网站建设要注意的标准 促进网站用户好感度!  Python图片处理进阶教程_Pillow滤镜与图像增强  Laravel storage目录权限问题_Laravel文件写入权限设置  html5如何实现懒加载图片_ intersectionobserver api用法【教程】