0

0

关于MySQL 索引详解

迷茫

迷茫

发布时间:2017-03-26 13:16:28

|

1819人浏览过

|

来源于php中文网

原创

mysql的索引是通过b+tree的方式的。b+tree是平衡二叉树的变种,所以查询的速度是非常快的。

索引主要分为聚集索引和辅助索引:

聚集索引:mysql中的数据是通过主键的聚集索引储存的,叶子节点中存放的就是每一行的数据,所以我们通过主键进行查询速度

如初快的原因就是主键是聚集索引,而实际使用中只会构建一颗这样的B+tree,所以这就可以解释为什么主键唯一了。

引用网上的图:

每一层的查找就是一次的IO操作,而一般B+tree层数都在2-4层 所以相当于最差的情况下,只需要做4次的IO操作。

辅助索引:辅助索引和聚集索引不同的地方在于叶子节点中储存的不是全部的数据,储存的是数据所在的位置。相当于我们使用了

辅助索引查找到数据之后,还需要在通过聚集索引的树查找详细的信息。

引用网上的图:

这个图是一个逻辑上的图,但是底层是通过叶子节点指向了所在的聚集索引,也就是说,接下面还需要在走一遍第一种图的

逻辑。

所以最终的是多个辅助索引树指向一个聚集索引树

 

 (画的真tm丑)

关于什么时候应该创索引

因为这是一棵树,通过二分查找的方式来进行检索,所以适用在作为where后面的条件时,并且这个值是很大范围内的,适合创建索引。对于那些范围很小的的(is_delete,sex等等枚举)是不适合的。

对于具体的情况,我们可以通过show index来进行分析:

去日租网站系统
去日租网站系统

去日租程序是一款具有强大的功能的基于.NET+SQL2000+AJAX构架的房屋出租管理系统。 日租网站管理系统,采用ASP.NET2.0语言开发,它集成租房模块、文章模块、订单模块、邮箱短信模块、用户模板、SEO优化模块、房间模块、支付模块等多项强大功能。系统有多年经验的高级工程师采用三层架构开发,页面代码全部采用DIV+CSS,完全符合SEO标准,有利于搜索引擎关键排名优化。日租网站

下载
show index from company_related_person

结果:

然后通过cardinality计算

select 105/(select count(*) from company_related_person) from DUAL

这里得到的结果是0.913(这个数值和储存量有关,最好有一定的数据量)  这个数值越接近1 索引的效率就越高,如果求出的值非常小,建议不要创建索引

我们可以同时可以通过explain查看索引的使用情况

EXPLAIN select * from company_related_person where company_id='2'

输出

key表示的就是当前使用的索引列。最后的extra表示的就是使用何种方式,这里是 Using index 表示的就是使用了索引,如果Using filesort 表示的就是直接读磁盘了

对于那些查询慢的sql复杂语句,可以通过这种方式进行分析。

SQL性能优化的目标:至少要达到 range 级别,要求是ref级别,如果可以是consts最好。

1)consts 单表中最多只有一个匹配行(主键或者唯一索引),在优化阶段即可读取到数据。

2)ref 指的是使用普通的索引(normal index)。

3)range 对索引进行范围检索

4) index 表示的是直接去磁盘中读取

从上面的那种图也可以看到我们使用的是ref

关于index和key的区别:

在我们创建索引的时候,经常会有这个疑问,index和key有什么区别?。Key即键值,是关系模型理论中的一部份,比如有主键(Primary Key),外键(Foreign Key)等,用于数据完整性检否与唯一性约束等。而Index则处于实现层面,比如可以对表个的任意列建立索引,那么当建立索引的列处于SQL语句中的Where条件中时,就可以得到快速的数据定位,从而快速检索。至于Unique Index,则只是属于Index中的一种而已,建立了Unique Index表示此列数据不可重复

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
java入门学习合集
java入门学习合集

本专题整合了java入门学习指南、初学者项目实战、入门到精通等等内容,阅读专题下面的文章了解更多详细学习方法。

2

2026.01.29

java配置环境变量教程合集
java配置环境变量教程合集

本专题整合了java配置环境变量设置、步骤、安装jdk、避免冲突等等相关内容,阅读专题下面的文章了解更多详细操作。

2

2026.01.29

java成品学习网站推荐大全
java成品学习网站推荐大全

本专题整合了java成品网站、在线成品网站源码、源码入口等等相关内容,阅读专题下面的文章了解更多详细推荐内容。

0

2026.01.29

Java字符串处理使用教程合集
Java字符串处理使用教程合集

本专题整合了Java字符串截取、处理、使用、实战等等教程内容,阅读专题下面的文章了解详细操作教程。

0

2026.01.29

Java空对象相关教程合集
Java空对象相关教程合集

本专题整合了Java空对象相关教程,阅读专题下面的文章了解更多详细内容。

3

2026.01.29

clawdbot ai使用教程 保姆级clawdbot部署安装手册
clawdbot ai使用教程 保姆级clawdbot部署安装手册

Clawdbot是一个“有灵魂”的AI助手,可以帮用户清空收件箱、发送电子邮件、管理日历、办理航班值机等等,并且可以接入用户常用的任何聊天APP,所有的操作均可通过WhatsApp、Telegram等平台完成,用户只需通过对话,就能操控设备自动执行各类任务。

25

2026.01.29

clawdbot龙虾机器人官网入口 clawdbot ai官方网站地址
clawdbot龙虾机器人官网入口 clawdbot ai官方网站地址

clawdbot龙虾机器人官网入口:https://clawd.bot/,clawdbot ai是一个“有灵魂”的AI助手,可以帮用户清空收件箱、发送电子邮件、管理日历、办理航班值机等等,并且可以接入用户常用的任何聊天APP,所有的操作均可通过WhatsApp、Telegram等平台完成,用户只需通过对话,就能操控设备自动执行各类任务。

16

2026.01.29

Golang 网络安全与加密实战
Golang 网络安全与加密实战

本专题系统讲解 Golang 在网络安全与加密技术中的应用,包括对称加密与非对称加密(AES、RSA)、哈希与数字签名、JWT身份认证、SSL/TLS 安全通信、常见网络攻击防范(如SQL注入、XSS、CSRF)及其防护措施。通过实战案例,帮助学习者掌握 如何使用 Go 语言保障网络通信的安全性,保护用户数据与隐私。

8

2026.01.29

俄罗斯Yandex引擎入口
俄罗斯Yandex引擎入口

2026年俄罗斯Yandex搜索引擎最新入口汇总,涵盖免登录、多语言支持、无广告视频播放及本地化服务等核心功能。阅读专题下面的文章了解更多详细内容。

622

2026.01.28

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
MySQL 教程
MySQL 教程

共48课时 | 2万人学习

MySQL 初学入门(mosh老师)
MySQL 初学入门(mosh老师)

共3课时 | 0.3万人学习

简单聊聊mysql8与网络通信
简单聊聊mysql8与网络通信

共1课时 | 815人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号