MySQL高级中explain之type的介绍
type类型
从最好到最差依次是:
system > const > eq_ref > ref > range > index > all
对以上分类的详细介绍表格如下:
type类型 | 详细介绍 |
system | 表只有一行记录(等于系统表),这是const类型的特例,平时不不会出现,这个可以忽略不计 |
const | 表示通过索引一次就找到了,const用于比较primary key或者 unique索引。因为只匹配一行数据,所以很快,如将主键置于where列表中,MySQL就能将该查询转为一个常量 |
eq_ref | 唯一性索引扫描,对于每个索引键,表中只有一条记录与之匹配,常见于主键或唯一索引扫描 |
ref | 非唯一性索引扫描,返回匹配某个单独值的所有行,本质上也是一种索引访问,它返回所有匹配某个单独值的行,然而它可能会找到多个符合条件的行,所以它应该属于查找和扫描的混合体 |
range | 只检索给定范围的行,使用一个索引来选择行,key列显示使用了哪个索引,一般就是在你的where语句种出现了between、<、>、in等的查询,这种范围扫描索引比全表扫描要好,因为只需要开始与索引的某一点,而结束与另一点,不用扫描全部索引 |
index | Full Index Scan,index与ALL区别为index类型只遍历索引树,这通常比ALL快,因为索引文件通常比数据文件小,(也就是说虽然all和index都是读全表,但index是从索引中读取的,而all是从硬盘中读的,后者与磁盘I/0的交互次数较多) |
all | Full Table Scan, 将遍历全表以找到匹配的行 |
备注:一般来说,得保证查询至少达到range级别,最好能达到ref
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· DeepSeek在M芯片Mac上本地化部署
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能