索引介绍

官方介绍索引是帮助MySQL高效获取数据的数据结构

  1. 优势:
    检索:可以提高数据检索的效率,降低数据库的IO成本;
    排序:被索引的列会自动进行排序,包括【单列索引】和【组合索引】,只是组合索引的排序要复杂一些,如果按照索引列的顺序进行排序,对应order by语句来说,效率就会提高很多;
    where 索引列在存储引擎层被处理,达到索引下推效果;
  2. 劣势: 占据磁盘空间; 索引虽然会提高查询效率,但是会降低更新表的效率;比如每次对表进行增删改操作,MySQL不仅要保存数据,还有保存或者更新对应的索引文件。

索引分类

  1. 单列索引
  2. 组合索引
  3. 全文索引(mysql支持差,es代替较多)
  4. 空间索引(5.7之后的版本)

索引原理

  1. B和B+的区别

    B树和B+树的最大区别在于非叶子节点是否存储数据的问题。
    B树是非叶子节点和叶子节点都会存储数据,查找数据需要遍历所有的节点;
    B+树只有叶子节点才会存储数据,而且存储的数据都是在一行上,默认排列好顺序(自左向右、从大到小),数据都有指针指向,也就是有顺序。所以B+TREE检索速度快;

  2. 非聚集索引(MyISAM) :索引与数据不在同一个文件中,在索引文件中找到地址,根据地址在数据文件中找到数据.
    (主键索引/非主键索引)下存储的都是数据的文件的地址值

    主键索引
    非主键索

  3. 聚集索引(InnoDB) :索引与数据在同一个文件中,即在同一棵树上。
    主键索引 数据都存在叶子结点上

    非主键索 叶子结点存的是主键

回表问题

select * from t where name=‘Alice’ ,此语句查询的执行过程是:
① 没建立索引
遍历整张表来查找结果,即全表扫描;
② 给name做了索引:
1.非主键索引树:A开头在左边查找,会很快查找到’Alice’下的主键18,
2.主键索引树:查找主键为’18’下的所有内容(因为是select * ,所以要查找所有的数据)

解决回表问题

  1. 只查索引和主键字段
    select id,name from t where name=‘Alice’ 此语句不会产生回表,在一个树上完成查询,提升查询效率。(非主键索引树存着主键)
  2. 需要查询到个别字段进行索引覆盖 (建立组合索引)
    在一棵树上完成查询工作,在回表中举例的查询语句只能实现id,name查询不回表;利用组合索引,完成索引覆盖;将name和score做为组合索引:

MySQL-03-索引相关推荐

  1. 【MySQL进阶-03】深入理解mysql的索引分类,覆盖索引,覆盖索引失效,回表,MRR

    MySql系列整体栏目 内容 链接地址 [一]深入理解mysql索引本质 https://blog.csdn.net/zhenghuishengq/article/details/121027025 ...

  2. MySQL中索引与视图的用法与区别详解

    索引与视图是我们在日常使用mysql必不可少的一部分,最近在学习中看到一本书中关于这方法写的不错,所以这篇文章主要给大家介绍了关于MySQL中索引与视图的使用与区别的相关资料,需要的朋友可以参考借鉴, ...

  3. mysql六:索引原理与慢查询优化

    一 介绍 为何要有索引? 一般的应用系统,读写比例在10:1左右,而且插入操作和一般的更新操作很少出现性能问题,在生产环境中,我们遇到最多的,也是最容易出问题的,还是一些复杂的查询操作,因此对查询语句 ...

  4. MySQL高级-索引

    索引 1.索引概述 2.索引优势劣势 3.索引结构 3.1 BTREE 结构 3.2 B+ TREE 结构 3.3 MySQL中的B+ 树 4 索引分类 5 索引语法 5.1 创建索引 5.2 查看索 ...

  5. mysql介绍索引类型的章节_mysql索引总结--mysql索引类型以及创建的详细介绍

    关于MySQL索引的好处,如果正确合理设计并且使用索引的MySQL是一辆兰博基尼的话,那么没有设计和使用索引的MySQL就是一个人力三轮车.对于没有索引的表,单表查询可能几十万数据就是瓶颈,而通常大型 ...

  6. MySQL 03 高级查询(一)

    MySQL 03 高级查询(一) 文章目录 MySQL 03 高级查询(一) 一.学习目标 二.调整数据库的表结构 三.修改表 四.设置主外键约束 五.添加约束 (练习) 六.数据操纵语言 6.1.D ...

  7. mysql数据库索引的科普

    文章归属:http://feiyan.info/16.html 关于MySQL索引的好处,如果正确合理设计并且使用索引的MySQL是一辆兰博基尼的话,那么没有设计和使用索引的MySQL就是一个人力三轮 ...

  8. mysql之索引原理与慢查询优化

    一.介绍 1.什么是索引? 一般的应用系统,读写比例在10:1左右,而且插入操作和一般的更新操作很少出现性能问题,在生产环境中,我们遇到最多的,也是最容易出问题的,还是一些复杂的查询操作,因此对查询语 ...

  9. mysql复合索引与普通索引总结

     正则匹配url Kohana框架as_array转换json数据 mysql复合索引.普通索引总结 2013-11-18 14:03:13|  分类: mysql |  标签: |举报 |字号大 ...

  10. mysql时间索引和格式探讨

    mysql时间 背景 前几天朋友发了一个问题 -- 表结构 type/status/create_time -- type区分度比status高,应该如何加索引1. type 2. type stat ...

最新文章

  1. SAP MM 中级之事务代码MICN的相关逻辑
  2. CTFshow 命令执行 web118
  3. 景观设计主题命名_好听的景观名字
  4. php zval_copy_static_var(),深入理解 PHP7 中全新的 zval 容器和引用计数机制
  5. 路径总和Python解法
  6. Windows中ElasticSearch的备份和还原
  7. iOS图形处理概论:OpenGL ES,Metal,Core Graphics,Core Image,GPUImage,OpenCV等
  8. 你了解软件测试吗?软件测试和调试有什么区别??
  9. 解决java中html转word文档,转成功后的word文档在断网情况下无法显示图片问题
  10. 前端工程师行业现状怎么样?前景如何?
  11. 合天网安《Weekly CTF》第四周
  12. 网络文学,为雪中打Call
  13. android 串口调试工具,串口调试助手下载-串口调试助手下载v1.0.4 安卓版-西西软件下载...
  14. Android:启动优化
  15. 7000字详解数据指标体系如何从设计到落地
  16. AD19 基础应用技巧(差分线的添加走线与蛇形等长)
  17. Linux top命令参数及使用方法详解
  18. RISC-V 指令详解
  19. 【数据库】数据库的安全性
  20. ソ前奏诗存档_如何评价日本摇滚乐团 和楽器バンド(和乐器乐团)?

热门文章

  1. Sectigo个人邮件签名流程
  2. 阿里云双11活动撸福利攻略主机篇 建站模版0元购
  3. 大圣归来:我们心中缺少一份英雄主义
  4. 阿里巴巴服务化架构演进
  5. Android 刷新 sdcard
  6. Mycraft红石蹦床
  7. python—接口调用
  8. HTML5实现类似刮刮卡的功能
  9. 怎么画蜘蛛爬取详情页面流程图
  10. 证件照图片怎么拍?证件照图片拍摄方法分享。