MYSQL-Innodb索引

注意项:
1、不是在所有查询条件下出现的列都需要添加索引,访问表中很少一部分数据时适合使用索引
2、mysql优化器选择是否使用索引是参考explain后的Rows字段,当Rows超过表中20%左右的数据时,mysql不会走索引,而是全表扫描
3、mysql优化器的选择不一定是可靠的,有时需要使用force index(),强制使用索引进行查询

磁盘读取:
顺序读取:是指顺序地读取磁盘上的块
随机读取:是指访问的块是不连续的,传统机械磁盘的需要磁头不断移动,瓶颈在于随机读取的性能低

mysql中顺序读和随机读:
顺序读:按照索引的叶节点数据就能顺序读取所需的数据
随机读:一般是指访问辅助索引的叶节点后,还需要根据辅助索引叶节点中的主键去找实际行数据,一般来说,辅助索引和主键所在的数据段不同,因此访问是随机的,因为随机读的性能会远低于顺序读,所以优化器会选择全表扫描
固态硬盘:固态硬盘没有磁头,随机读取的性能大大提高,所以上面所说的20%的概念在固态硬盘中不适用

辅助索引的优化使用:
1、辅助索引的叶并不包含完整的行信息,Innodb会先从辅助索引的叶节点中判断是否能得到所需数据,如果不能则再根据主键去查找数据
2、因为辅助索引的页中能存放的数据比主键页上存放的数据多,因此优化器会优先选择辅助索引
3、如果对主键进行了排序,则不会选择辅助索引来获取数据(前提是没有根据辅助索引字段进行查询)

联合索引的使用:
1、联合索引也是一颗B+树,索引页中是两个或多个元素
2、联合索引不能以第二个或之后的字段作为查询条件来查,否则不会走索引,因为B+树是以第一个字段进行排序的
3、联合索引有一个优点,在前面字段相同的情况下,后面字段的排了序的,所以在查询时使用order by可以减少一次排序





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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值