mysql索引总结

索引的种类 --> 每个种类的作用,创建方式
索引的数据结构 --> 结构的原理,优缺点
Sql的执行计划
Sql缓存,服务器参数
大表查询优化

适合创建索引的情况:

1、在经常需要搜索的列上,可以加快搜索的速度。 
2、在作为主键的列上,强制该列的唯一性和组织表中数据的排列结构。
3、在经常用于连接两张表的列上,这些列主要是一些外键,可以加快连接的速度。
4、在经常需要根据范围进行搜索的列上创建索引,因为索引已经排序,其指定的范围是连续的。
5、在经常需要排序的列上创建索引,因为索引已经排序,这样查询可以利用索引的排序,加快排序查询时间。
6、在经常使用在WHERE子句中的列上面创建索引,加快条件的判断速度。


不适合建立索引的情况:

1.不适合键值较少的列(重复数据较多的列)
2.表记录太少
3.经常增删改的表

索引失效的情况:

1.like的模糊查询以%开头,索引失效
2.如果列类型是字符串,那一定要在条件中将数据使用引号引用起来,否则不会使用索引
3.对于多列索引,不是使用的第一部分,则不会使用索引
4.where中索引列使用了函数
5.条件中用or,即使其中有条件带索引,也不会使用索引查询(这就是查询尽量不要用or的原因,用in吧)
注意:使用or,又想索引生效,只能将or条件中的每个列都加上索引
6.索引不存储null值
更准确的说,单列索引不存储null值,复合索引不存储全为null的值。索引不能存储Null,所以对这列采用is null条件时,因为索引上根本没Null值,不能利用到索引,只能全表扫描。为什么索引列不能存Null值?
将索引列值进行建树,其中必然涉及到诸多的比较操作。Null值的特殊性就在于参与的运算大多取值为null。
这样的话,null值实际上是不能参与进建索引的过程。也就是说,null值不会像其他取值一样出现在索引树的叶子节点上。

参考 :https://blog.csdn.net/bless2015/article/details/84134361
https://www.cnblogs.com/zhuyeshen/p/8625634.html
https://blog.csdn.net/weixin_34009794/article/details/88700745
https://www.cnblogs.com/bypp/p/7755307.html
https://blog.csdn.net/choath/article/details/80779129

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值