MySQL-03-索引
索引介绍
官方介绍索引是帮助MySQL高效获取数据的数据结构
- 优势:
检索:可以提高数据检索的效率,降低数据库的IO成本;
排序:被索引的列会自动进行排序,包括【单列索引】和【组合索引】,只是组合索引的排序要复杂一些,如果按照索引列的顺序进行排序,对应order by语句来说,效率就会提高很多;
where 索引列在存储引擎层被处理,达到索引下推效果; - 劣势: 占据磁盘空间; 索引虽然会提高查询效率,但是会降低更新表的效率;比如每次对表进行增删改操作,MySQL不仅要保存数据,还有保存或者更新对应的索引文件。
索引分类
- 单列索引
- 组合索引
- 全文索引(mysql支持差,es代替较多)
- 空间索引(5.7之后的版本)
索引原理
B和B+的区别
B树和B+树的最大区别在于非叶子节点是否存储数据的问题。
B树是非叶子节点和叶子节点都会存储数据,查找数据需要遍历所有的节点;
B+树只有叶子节点才会存储数据,而且存储的数据都是在一行上,默认排列好顺序(自左向右、从大到小),数据都有指针指向,也就是有顺序。所以B+TREE检索速度快;非聚集索引(MyISAM) :索引与数据不在同一个文件中,在索引文件中找到地址,根据地址在数据文件中找到数据.
(主键索引/非主键索引)下存储的都是数据的文件的地址值
主键索引
非主键索
聚集索引(InnoDB) :索引与数据在同一个文件中,即在同一棵树上。
主键索引 数据都存在叶子结点上
非主键索 叶子结点存的是主键
回表问题
select * from t where name=‘Alice’ ,此语句查询的执行过程是:
① 没建立索引
遍历整张表来查找结果,即全表扫描;
② 给name做了索引:
1.非主键索引树:A开头在左边查找,会很快查找到’Alice’下的主键18,
2.主键索引树:查找主键为’18’下的所有内容(因为是select * ,所以要查找所有的数据)
解决回表问题
- 只查索引和主键字段
select id,name from t where name=‘Alice’ 此语句不会产生回表,在一个树上完成查询,提升查询效率。(非主键索引树存着主键) - 需要查询到个别字段进行索引覆盖 (建立组合索引)
在一棵树上完成查询工作,在回表中举例的查询语句只能实现id,name查询不回表;利用组合索引,完成索引覆盖;将name和score做为组合索引:
MySQL-03-索引相关推荐
- 【MySQL进阶-03】深入理解mysql的索引分类,覆盖索引,覆盖索引失效,回表,MRR
MySql系列整体栏目 内容 链接地址 [一]深入理解mysql索引本质 https://blog.csdn.net/zhenghuishengq/article/details/121027025 ...
- MySQL中索引与视图的用法与区别详解
索引与视图是我们在日常使用mysql必不可少的一部分,最近在学习中看到一本书中关于这方法写的不错,所以这篇文章主要给大家介绍了关于MySQL中索引与视图的使用与区别的相关资料,需要的朋友可以参考借鉴, ...
- mysql六:索引原理与慢查询优化
一 介绍 为何要有索引? 一般的应用系统,读写比例在10:1左右,而且插入操作和一般的更新操作很少出现性能问题,在生产环境中,我们遇到最多的,也是最容易出问题的,还是一些复杂的查询操作,因此对查询语句 ...
- MySQL高级-索引
索引 1.索引概述 2.索引优势劣势 3.索引结构 3.1 BTREE 结构 3.2 B+ TREE 结构 3.3 MySQL中的B+ 树 4 索引分类 5 索引语法 5.1 创建索引 5.2 查看索 ...
- mysql介绍索引类型的章节_mysql索引总结--mysql索引类型以及创建的详细介绍
关于MySQL索引的好处,如果正确合理设计并且使用索引的MySQL是一辆兰博基尼的话,那么没有设计和使用索引的MySQL就是一个人力三轮车.对于没有索引的表,单表查询可能几十万数据就是瓶颈,而通常大型 ...
- MySQL 03 高级查询(一)
MySQL 03 高级查询(一) 文章目录 MySQL 03 高级查询(一) 一.学习目标 二.调整数据库的表结构 三.修改表 四.设置主外键约束 五.添加约束 (练习) 六.数据操纵语言 6.1.D ...
- mysql数据库索引的科普
文章归属:http://feiyan.info/16.html 关于MySQL索引的好处,如果正确合理设计并且使用索引的MySQL是一辆兰博基尼的话,那么没有设计和使用索引的MySQL就是一个人力三轮 ...
- mysql之索引原理与慢查询优化
一.介绍 1.什么是索引? 一般的应用系统,读写比例在10:1左右,而且插入操作和一般的更新操作很少出现性能问题,在生产环境中,我们遇到最多的,也是最容易出问题的,还是一些复杂的查询操作,因此对查询语 ...
- mysql复合索引与普通索引总结
正则匹配url Kohana框架as_array转换json数据 mysql复合索引.普通索引总结 2013-11-18 14:03:13| 分类: mysql | 标签: |举报 |字号大 ...
- mysql时间索引和格式探讨
mysql时间 背景 前几天朋友发了一个问题 -- 表结构 type/status/create_time -- type区分度比status高,应该如何加索引1. type 2. type stat ...
最新文章
- SAP MM 中级之事务代码MICN的相关逻辑
- CTFshow 命令执行 web118
- 景观设计主题命名_好听的景观名字
- php zval_copy_static_var(),深入理解 PHP7 中全新的 zval 容器和引用计数机制
- 路径总和Python解法
- Windows中ElasticSearch的备份和还原
- iOS图形处理概论:OpenGL ES,Metal,Core Graphics,Core Image,GPUImage,OpenCV等
- 你了解软件测试吗?软件测试和调试有什么区别??
- 解决java中html转word文档,转成功后的word文档在断网情况下无法显示图片问题
- 前端工程师行业现状怎么样?前景如何?
- 合天网安《Weekly CTF》第四周
- 网络文学,为雪中打Call
- android 串口调试工具,串口调试助手下载-串口调试助手下载v1.0.4 安卓版-西西软件下载...
- Android:启动优化
- 7000字详解数据指标体系如何从设计到落地
- AD19 基础应用技巧(差分线的添加走线与蛇形等长)
- Linux top命令参数及使用方法详解
- RISC-V 指令详解
- 【数据库】数据库的安全性
- ソ前奏诗存档_如何评价日本摇滚乐团 和楽器バンド(和乐器乐团)?