MySQL 索引使用有哪些注意事项呢?(从六个方面回答)

1.什么是索引
 索引是一种特殊的数据库结构,有数据表中的一列或者多列组合而成,可以快速查询数据表中的值,相当于图书的目录,根据目录的页码快速找到所需内容
 
2.建立索引的原则
  查询更快,占用空间小
  1.定义主键的数据列一定要建立索引
  2.定义有外键的数据列一点要建立索引
  3.对于经常查询的数据列建立索引
  4.对于需要在指定范围内的快速或频繁查询的数据列
  5.经常用where字句中的数据列
  6.经常出现在关键字order by、group by、distinct后面的字段,建立索引。如果建立的是复合索引,索引的字段顺序要和这些关键字后面的字段顺序一致,否则索引不会被使用。
  7.查询中很少涉及的列,重复值比较多的列不要建立索引
  8.对于定义为text、image和bit、的数据类型的列不要建立索引
  9.经常存取的列不要建立
  10.限制索引数目,索引数一般不超过3个,最多不超过5个。索引提高了访问速度,但太多索引会影响数据的更新
  
3.有那些索引,分别解释
  1.普通索引:普通索引是最基本的索引,它没有任何限制,值可以为空,仅加速查询
  2.唯一性索引:唯一索引与普通索引类似,不同:索引列的值必须唯一,允许有空值。如果是组合索引,则列值得组合必须唯一
  3.全文索引:主要用来查找文本中的关键字,而不是直接与索引中的值相比较。fulltext索引跟其它索引大不相同,它更像是一个搜索引擎,而不是简单的where语句的参数匹配
  4.单列索引(主键):是一种特殊的唯一索引,一个表只能有一个主键,不允许有空置。
  5.多列索引(组合):在多个字段上创建的索引,只有在查询条件中使用了创建索引时的第一个字段,索引才会被使用。使用组合索引时遵循最左前缀集合
  
4.那些情况下索引无法起作用
  1.对列进行计算或者是使用函数,则该列索引失效
  2.不匹配数据类型
  3.where语句中使用 IS NULL 或者IS NOT NULL
  4.使用了反向操作
  5.使用link操作
  6.在where中使用OR时,有一个列没有索引,那么其他列的所有将不起作用
  
5.使用索引的注意事项
  1.不要再列上使用函数和进行运算,引起失效
  2.尽量避免使用or来连接条件,导致索引失效进行全表扫描
  3.in走索引,not in索引失效
  4.单列索引和复合索引。尽量使用复合索引,而少使用单列索引
  5.如果mysql评估使用索引比全表更慢。则不使用索引
  6.范围查询右边的列,不能使用索引
  7.尽量使用覆盖索引,避免select * 尽量使用覆盖索引(只访问索引的查询(引列完全包含查询列)),减少select *。查询列超过索引列也会降低效率
  8.最左前缀法则如果索引了多列,要遵守最左前缀法则。指的是查询从索引的最左前列开始,并且不跳过索引中的列
  9.is Null,is Not NULL有时索引失效
  10.以%开头的Like模糊查询,索引失效。如果仅仅是尾部模糊匹配,索引不会失效。如果是头部模糊匹配,引失效。
  11.全值匹配,对索引中所有列都指定具体值。改情况下,索引生效,执行效率高。
  
6.什么情况下需要使用索引
(1)列经常被用于where条件中
(2)列中有大量的空值
(3)表几乎没有被修改
(4)数据量很大,只有2-4%的数据被选出来
————————————————
版权声明:本文为CSDN博主「Qinꦿ.๓」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_47541976/article/details/125980138

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值