MySQL之索引类

合适的建立索引,最好使用经常作为查询条件的字段如name ,使用重复度低的字段,提高索引性能,有时候会碰到索引失效的情况

索引失效的情况:

1 在使用索引的列中存在null值,因为索引底层是B树,带有排序的,而null值无法排序,导致了索引失效.这种情况下,可以使用复合索引,让另外的索引不为空值.

        2:键值较少的列,不合适使用索引,如student表的sex(gender)字段,只有男,女 或0,1两个值,如果有2000行数据,并且使用性别作为索引的话,导致条件查找性别为男的行有1000行,在剩下的1000行中进行全表扫描.

        3模糊查询也可能导致索引失效,语法类似LIKE '%XXX%' 由于 %再mysql中的含义是匹配一个或多个,而索引中的前缀树,是带有顺序的,所以索引失效变成了全表扫描,如果使用LIKE 'X%' 的话,索引就可以先查找前缀为X的行,然后再做查找

        4:如果条件带有or的情况,即使条件中使用了索引,他也不会生效,如果想使用or的情况,考虑每一个条件都使用索引 如 where XXX or AAA XXX使用了索引,但sql语句,还需要判断后面一个条件,故 or导致了索引失效.

mysql主要提供了两种方式的索引:

        1B树索引

        2Hash索引

B树索引 相对于常规的二叉树,B树的叶子节点有很多个,而二叉树只有两个,二叉树改造成B树的话,增加叶子节点,使整颗树变得矮又胖,整颗树的高度变低.类似二分查找.Hash索引 主要做等于(< > = in)查找 因为HASH表的查找效率为O(1) 如果该字段以范围查找为主,B树索引是一个更好的选择.

后续更新mysql进阶相关方面的文章

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值