MySQL索引小结

1.索引的实现原理

 

索引在MySQL中都是以树的形式存在的(自平衡二叉树:B-Tree)

 2 在MySQL中主键和unique字段上都会自动添加索引

3什么时候会需要添加索引?

        1数据量庞大

        2该字段经常出现在where后面

索引的优点

通过创建 唯一性索引,可以保证数据库表中每一行数据的唯一性;
可以加快数据的 检索速度,这也是创建索引的主要原因;
可以加速表和表之间的连接,特别是在实现 数据的参考完整性 方面特别有意义;
通过使用索引,可以在查询的过程中,使用 优化隐藏器,提高系统性能。
索引的缺点

时间上,创建和维护索引都要耗费时间,这种时间随着数据量的增加而增加,具体地,当对表中的数据进行增加、删除和修改的时候,索引也要动态的维护,这样就降低了数据的维护速度;
空间上,索引需要占 物理空间,除了数据表占数据空间之外,每一个索引还要占一定的物理空间,如果要建立聚簇索引,那么需要的空间就会更大。

作者:力扣 (LeetCode)
链接:https://leetcode-cn.com/leetbook/read/database-handbook/pxnng6/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

什么是最左前缀匹配原则
在 MySQL 建立 联合索引(多列索引) 时会遵守最左前缀匹配原则,即 最左优先,在检索数据时从联合索引的最左边开始匹配。例如有一个 3 列索引(a,b,c),则已经对(a)、(a,b)、(a,b,c)上建立了索引。所以在创建 多列索引时,要根据业务需求,where 子句中 使用最频繁 的一列放在最左边。

根据最左前缀匹配原则,MySQL 会一直向右匹配直到遇到 范围查询(>、<、between、like)就停止匹配,比如采用查询条件 where a = 1 and b = 2 and c > 3 and d = 4 时,如果建立(a,b,c,d)顺序的索引,d 是用不到索引的,如果建立(a,b,d,c)的索引则都可以用到,并且 where 子句中 a、b、d 的顺序可以任意调整。

如果建立的索引顺序是 (a,b) ,那么根据最左前缀匹配原则,直接采用查询条件 where b = 1 是无法利用到索引的。

作者:力扣 (LeetCode)
链接:https://leetcode-cn.com/leetbook/read/database-handbook/px0cug/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

        3该字段很少进行DML操作 (增删改)

4添加索引

        create index emp_ename_index on(emp)ename;

5删除索引

        drop index emp_ename_index on emp;

6如何查看是否使用了索引

        explain select xxxxx;
7索引失效的三种情况

        1查询时以“%”开头

        2使用or

        3使用复合索引的时候,没有使用左侧的列查找

        4where查询中索引列参加了运算 

        5 where当中索引列使用了函数

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值