Mysql索引

一.Btree+索引

http://blog.codinglabs.org/articles/theory-of-mysql-index.html

假设col1是主键。InnoDB引擎下,数据文件本身就是索引文件。MyISAM索引文件和数据文件是分离的,索引文件仅保存数据记录的地址。而在InnoDB中,表数据文件本身就是按B+Tree组织的一个索引结构,这棵树的叶节点data域保存了完整的数据记录。这个索引的key是数据表的主键,因此InnoDB表数据文件本身就是主索引

InnoDB表必须有主键,所以本身按主键查询就是按主索引查询。InnoDB的所有辅助索引都引用主键作为data域。例如,图11为定义在Col3上的一个辅助索引。

通过辅助索引查询,其实是查了两遍索引,先通过辅助索引找主索引,再通过主索引找数据。这可以解释很多btree索引的使用技巧:

1.联合索引最左端原则: 联合索引其实是辅助索引,从上图看,联合索引一样也是B树,最左端索引应该是在树的最上端,得通过最左端字段首先在树中进行查找,然后才能通过联合索引的其他字段在树中查找。(也没有找到联合索引的Btree+结构图);

2.覆盖索引最好:比如说联合索引有AB两个字段,查询条件是AB两个字段,直接就能用联合索引找到对应数据的主键,然后找到数据。如果查询条件是AC两个字段,则只能通过联合索引的A索引找到一部分符合条件主键信息,这部分也包含了不符合C字段的信息,然后再通过主键找到数据,筛选出符合C条件的数据。

3.不建议用长字段做主键,因为辅助索引是单独的文件,长主键意味着辅助索引文件大

4.自增主键很好,正好让BTREE+,数据顺序排列,同时主键也是顺序。

 

二.哈希索引

https://blog.csdn.net/olizxq/article/details/82313489

 

三.RTree索引 全文索引

https://blog.csdn.net/ZYC88888/article/details/81701712

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值