7.MySQL 索引的数据结构(四)

  1. MySQL 不同的引擎对于索引有不同的支持。
    InnoDB 和 MyISAM 索引使用的是 B + Tree,而Mermory 索引使用的是 Hash。
  2. MySQL 一个表最多创建 64 个索引,索引最多包含 16 个列。
  3. MySQL 索引选用 B+树的原因
    1)提高索引查询时的磁盘 IO效率,还可以提高范围查询的效率;
    2)查询 IO 次数更少,特别是范围查询;
    3)所有查询都有查找到叶子节点,查询性能稳定;
    4)B+ 树里的元素也都是有序的;
  4. MySql B+ 树索引和哈希索引的区别
    1)哈希索引适合等值查询,但是无法进行范围查询;
    2)哈希索引无法利用索引完成排序;
    3)哈希索引不支持多列联合索引的最左匹配规则;
    4)如果有大量重复键值的情况,就可能存在哈希碰撞问题,哈希索引的效率会很低;
    所以说,B+ 树索引绝对适用于大多数场景,用B+ 树索引就可以了.
  5. MySql 索引失效常见的场景
    1)不符合索引最左匹配原则;
    2)like 模糊查询以 % 开头;
    3)索引列上使用了函数、表达式计算;
    4)数据类型出现隐式转化,即查询条件索引列类型和查询数据类型不一致;
    5)join 条件中索引列数据类型不一致;
    6)条件存在 null 值,如:name is not null;
    7)使用了 !=、<>、not in 判断条件;
    8)查询条件使用了 or ,要想索引生效,or 中的每一列都加上索引;
  6. MySql 引擎 MyISAM 和 InnoDB 的区别
    1)MyISAM 不支持事务, InnoDB 支持事务;
    2)MyISAM 只支持表级锁, InnoDB 支持表级锁和行级锁;
    3)MyISAM 不支持外键,InnoDB 支持;
    4)MyISAM 允许没有任何索引和主键,InnoDB 必须要有;
    5)MyISAM 表和索引分两个文件存储,InnoDB 表和索引都保存再同一个数据文件中;
  7. MySql 引擎的物理存储文件
    1)MySql InnoDB 引擎在磁盘上存储了两个文件:
    1. .frm
      存在与表相关的元数据信息,包括表结构的定义信息等;
    2. .idb
      存在 InnoDB 所有表数据和索引;
      2)MySql MyISAM 引擎在磁盘上存储了三个文件:
    3. .frm
      存在与表相关的元数据信息,包括表结构的定义信息等;
    4. .myd
      存储 MyISAM 引擎的表数据;
    5. .myi 文件
      存储 MyISAM 引擎的表索引相关数据;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值