美文网首页
Mysql聚簇索引

Mysql聚簇索引

作者: EnchantF | 来源:发表于2019-07-12 16:51 被阅读0次

存储引擎InnoDB
索引是一种数据结构(本质是对数据排序),能提高我们的查询速度:运用 局部性原理

索引采用的数据结构:Hash索引(key-value)和B+树索引(多路平衡查询树)

Hash索引(key-value)和B+树索引区别:

  • 哈希索引只适用于等值查询的场景,但无法进行范围查询
  • 哈希索引无法利用索引进行排序
  • 哈希索引不支持多列联合索引的最左匹配原则
  • 如果有大量重复键值得情况下,哈希索引的效率很低,因为存在哈希碰撞

聚簇索引(叶子节点存储 整行数据)与非聚簇索引(主键值)


聚簇与非聚簇.png

覆盖索引:一个查询语句只需要从索引取得,不必从数据表中读取

因为InnoDB的数据文件本身要按主键聚集,所以InnoDB要求表必须有主键(MyISAM可以没有)
如果没有显式指定,则MySQL系统会自动选择一个可以唯一标识数据记录的列作为主键
如果不存在这种列,则MySQL自动为InnoDB表生成一个隐含字段作为主键

页结构 B+树

索引的最左匹配特性
叶子节点存储真实数据(索引字段要尽量小,降低树的高度)

辅助索引:data域记录主键的值,而不是地址

辅助索引搜索:
1.检索辅助索引获得主键,
2.利用主键,到主索引中检索获得记录

在使用InnoDB存储引擎时,如果没有特别的需要,请永远使用一个与业务无关的自增字段作为主键

Mysql5.6对对索引引入了哪些优化:
索引下推技术(有了索引下推可以在有like的情况下,减少回表次数)

查询优化器(explain select。。。 )
在一条单表查询语句真正执行之前,MySQL的查询优化器会找出执行该语句所有可能使用的方案,对比之后找出成本最低的方案。
优化过程大致如下:
1、根据搜索条件,找出所有可能使用的索引
2、计算全表扫描的代价
3、计算使用不同索引执行查询的代价
4、对比各种执行方案的代价,找出成本最低的那一个

相关文章

  • MySQL索引

    聚簇索引和非聚簇索引 只有Innodb有聚簇索引,MyISAM引擎没有聚簇索引。 主键一定是聚簇索引,MySQL的...

  • 索引

    mysql中的索引 MySQL中普遍使用B+Tree做索引,但在实现上又根据聚簇索引和非聚簇索引而不同。 聚簇索引...

  • 面试总结

    mysql 索引的类型、索引的底层结构、索引失效的情况聚簇索引和非聚簇索引mysql的隔离级别, innerdb默...

  • [数据库之十二] 数据库索引之覆盖索引

    1、MySQL 中的聚簇索引   对于 MySQL InnoDB 引擎来说,表必须要有聚簇索引(也叫聚集索引),设...

  • 高性能的索引策略

    MySQL查询基础-查询执行过程 MySQL聚簇索引 MySQL覆盖索引 MySQL索引扫描排序 MySQL冗余和...

  • Mysql的索引实践

    上次聊到Mysql的索引,特别是InnoDB索引,InnoDB所以为聚簇索引,所谓聚簇索引是说数据是存在索引中的,...

  • mysql 聚簇索引 非聚簇索引

    1 索引类型 1.1 聚簇索引 聚簇索引的叶子节点,存储就是数据节点。索引叶子节点的顺序和数据存储顺序一致。 1....

  • InnoDB-索引

    四、索引 mysql支持的常见索引:B+,全文、hash 1.B+树索引 B+树索引可以分为聚簇索引和非聚簇索引。...

  • 为什么设计一张独立的表存储扩展字段

    mysql引擎 ** mysql 使用了B+树和聚簇索引 **聚簇索引:索引文件和数据文件存储在同一份文件中,树中...

  • MySQL InnoDB索引设计指南

    一、索引设计原则 在MySQL中常用的B+树索引分为聚簇索引和辅助索引,关于辅助索引,虽然个数没有限制(聚簇索引一...

网友评论

      本文标题:Mysql聚簇索引

      本文链接:https://www.haomeiwen.com/subject/ztiskctx.html