首页 > 网络 > 网络热点

MySQL专题1:

常驻编辑 网络热点 2022-06-04 字段   索引   节点   字节   长度   区别   类型   引擎   文件   专题   数据
EuL拜客生活常识网

  • InnoDB不支持HASH索引(但是InnoDB在内部利用哈希索引来实现其自适应哈希索引功能)
  • InnoDB会根据表的使用情况自动为表生成hash索引, 不能人为干预是否在InnoDB一张表中创建HASH索引
  • 当InnoDB某些索引值被使用的特别频繁时, 会在内存中基于Btree的索引之上再创建一个HASH索引, 这样BTREE索引也具备了HASH索引的一些优点

unique key unique_username using btree(user_name)EuL拜客生活常识网

这里的using btree 只是显式指定的使用的索引的方式为b+树, 对于innodb来说默认的索引方式也是用b+树, 因此可以不写EuL拜客生活常识网



EuL拜客生活常识网

聚簇索引和非聚簇索引的区别?

聚簇索引是对磁盘上实际数据重新组织以按指定的一个或多个列的值排序的算法. 特点是存储数据的顺序和索引顺序一致. 一般情况下主键会默认创建聚簇索引, 且一张表只允许存在一个聚簇索引.EuL拜客生活常识网

聚簇索引的叶子节点就是数据节点, 而非聚簇索引的叶子节点仍然是索引节点, 只不过有指向对应数据块的指针EuL拜客生活常识网

MyISAM的是非聚簇索引, B+Tree的叶子节点上的data, 并不是数据本身, 而是数据存放的地址. 主索引和辅助索引没啥区别, 只是主索引中的key一定得是唯一的EuL拜客生活常识网

InnoDB使用的是聚簇索引, 将主键组织到一棵B+树中, 而行数据就储存在叶子节点上, 若使用"where id = 14"这样的条件查找主键, 则按照B+树的检索算法即可查找到对应的叶节点, 之后获得行数据EuL拜客生活常识网



EuL拜客生活常识网

非聚集索引中的聚集索引键

在MySQL 5.6.9版本前, Innodb的非聚集索引中包含聚集索引的索引键, 但只起到通过非聚集索引定位记录的作用, 但在MySQL 5.6.9之后版本中, 优化器会考虑非聚集索引中包含的聚集索引键来提升查询性能, 并提供优化器选项use_index_extensions来开启或关闭该特性.EuL拜客生活常识网

假设有表TB1(ID,C1,C2), ID为主键聚集索引, 然后在列C1建立索引IDX_C1(C1):EuL拜客生活常识网

  • 在MySQL 5.6版本前, 索引类似于IDX_C1(C1) INCLUDE(ID);
  • 在MySQL 5.6版本中, 索引类似于IDX_C1(C1,ID);

无论是MySQL 5.5还是MySQL 5.6版本中, 非聚集索引上的数据都是先按照非聚集索引键在按照聚集索引键进行排序, 即在非聚集索引键上值相同的记录会按照聚集索引进行排序.EuL拜客生活常识网



EuL拜客生活常识网

B+tree 如何进行优化? 索引遵循哪些原则?

最左前缀匹配原则, 非常重要的原则, mysql会一直向右匹配直到遇到范围查询
=和in可以乱序
尽量选择区分度高的列作为索引
查询时, 索引列不要参与计算
EuL拜客生活常识网



EuL拜客生活常识网

还有什么其他的索引类型, 各自索引有哪些优缺点?

B+ Tree, Hash, FullText, R TreeEuL拜客生活常识网

如何管理 MySQL索引?

主要说一下索引的创建, 修改和删除, 以及不同的索引类型: 普通索引, 唯一索引, 全文索引, 空间索引, 单列索引, 多列索引

相关阅读:

  • 字段类型有哪些(字段长度怎么设置)
  • 技术人必备的接口测试神器:apifox、apipost、yapi,实用
  • 我做开发测试犯的错
  • 基于SpringBoot微服务开发中的异常处理最佳实践
  • 你今天玩游戏了吗?游戏道具了解下
  • 面渣逆袭:MySQL六十六问,两万字+五十图详解!有点六
  • 什么是CSRF
  • 最全SQL
  • 云原生(十四)
  • MySQL索引原理篇:深入数据库底层揭开索引机制的神秘面
    • 网站地图 |
    • 声明:登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。文章内容仅供参考,不做权威认证,如若验证其真实性,请咨询相关权威专业人士。