前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >mysql之索引(一)

mysql之索引(一)

作者头像
周杰伦本人
发布2022-10-25 16:18:16
3630
发布2022-10-25 16:18:16
举报
文章被收录于专栏:同步文章

1,索引谁实现的

正确的创建合适的索引是提升数据库查询性能的 使用b+树实现

2,索引的定义

索引 是为了加速对表中数据行的检索而创建的一种分散存储的数据结构

image-20200626224400244
image-20200626224400244

为什么要用索引?

索引能极大的减少 存储引擎需要扫描的数据量 索引 可以把随机IO 变成顺序IO 索引 可以帮助 我们在进行 分组、 排序等操作时,避免使用临时表

3,为什么选择B+Tree

平衡二叉树:

image-20200627002159015
image-20200627002159015

缺点:

  1. 它太深了 数据处的(高)深度决定着他的IO 操作次数,IO 操作耗时大
  2. 它太小了 每一个磁盘块 (节点/ 页) 保存的数据量太小了 没有很好的利用操作磁盘IO 的数据交换特性,也没有利用好磁盘IO 的预 读能力(空间局部性原理 ),从而带来频繁的IO

多路平衡查找数B Tree:

image-20200627002839145
image-20200627002839145

加强版多路平衡查找数 B+数:

image-20200627003139371
image-20200627003139371

B+TRee与B Tree的区别:

  1. B+ 节点关键字搜索采用闭合区间
  2. B+ 非叶节点不保存数据相关信息,只保存关键字和子节点的引用
  3. B+ 关键字对应的数据保存在叶子节点中
  4. B+ 叶子节点是顺序排列的,并且相邻节点具有顺序引用的关系

为什么选择B+Tree?

  1. B+ 树是B- 树的变种(PLUS 版)多路绝对平衡查找树,他拥有B- 树的优势
  2. B+ 树扫库、表能力更强
  3. B+ 树的磁盘读写能力更强
  4. B+树 树 的排序能力更强
  5. B+ 树的查询效率更加

4,B+Tree在两大引擎中如何体现

Myisam

image-20200627004211565
image-20200627004211565
image-20200627004249316
image-20200627004249316

Innodb

image-20200627004403622
image-20200627004403622
image-20200627004441573
image-20200627004441573

Innodb与Myisam对比

image-20200627004514813
image-20200627004514813

5,索引知识补充

列的离散性

越大离散型越好

离散性越高选择性就越好 比如性别建索引不太好 选择性太差还不如全表扫描

最左匹配原则

对索引中关键字进行计算(对比),一定是从左往右依次进行,且不可跳过

image-20200627005635430
image-20200627005635430

单列索引:节点中关键字[name] 联合索引:节点中关键字[name,phoneNum] 单列索引是特殊的联合索引 联合索引列选择原则:

  1. 经常用的列优先 【 最左匹配原则 】
  2. 选择性(离散度)高的列 优先 【 离散度高原则 】
  3. 宽度小的列 优先 【 最少空间原则】

覆盖索引

如果查询列可通过索引节点中的关键字直接返回,则该索引称之为覆盖索引。 覆盖索引可减少数据库IO,将随机IO变为顺序IO,可提高查询性能

所以才不让用select* 被命中索引就不用回表了

索引注意点

  • 索引列的数据长度能少则少。
  • 索引一定不是越多越好,越全越好,一定是建合适的。
  • 匹配列前缀可用到索引 like 9999%, like %9999%、like %9999用不到索引;
  • Where 条件中 not in 和 <>操作无法使用索引;
  • 匹配范围值,order by 也可用到索引;
  • 多用指定列查询,只返回自己想到的数据列,少用select *;
  • 联合索引中如果不是按照索引最左列开始查找,无法使用索引;
  • 联合索引中精确匹配最左前列并范围匹配另外一列可以用到索引;
  • 联合索引中如果查询中有某个列的范围查询,则其右边的所有列都无法使用索引;
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-07-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1,索引谁实现的
  • 2,索引的定义
  • 3,为什么选择B+Tree
  • 4,B+Tree在两大引擎中如何体现
  • 5,索引知识补充
    • 列的离散性
      • 最左匹配原则
        • 覆盖索引
          • 索引注意点
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档