索引失效的介绍和避免方法

本文介绍了数据库索引的概念,阐述了索引失效的原因,如范围条件查询、函数运算等,并提供了避免索引失效的建议,包括使用索引覆盖、注意SQL查询中的条件和like操作。
摘要由CSDN通过智能技术生成

索引是什么

        在关系数据库 中,索引是一种单独的、物理的对数据库表中一列或多列的值进行排序的一种 存储结构 ,它是某个表中一列或若干列值的集合和相应的指向表中物理标识这些值的数据页的逻辑指针清单。 索引的作用相当于图书的目录,可以根据目录中的页码快速找到所需的内容。

索引失效

        索引失效(Index Degradation或Index Inefficiency)是指在数据库查询过程中,虽然相关表上有可用的索引,但由于多种原因,数据库未能有效地利用这些索引来加速查询过程,而是选择全表扫描或者其他效率较低的检索方式。

如何避免索引失效(高薪常问)

(1) 范围条件查询

(2) 不要在索引上使用函数运算, 否则索引也会失效.

比如在索引上使用切割函数, 就会使索引失效.

(3) 字符串不加引号, 造成索引失效.

(4) 尽量使用索引覆盖, 避免 select *, 这样能提高查询效率.

如果索引列完全包含查询列, 那么查询的时候把要查的列写出来, 不使用 select *

通俗讲:

索引覆盖: 通过索引就能找到你要的资料信息

回表:通过索引不能完全拿出你要的信息,需要通过数据表再次查询一次才能获取到.

explain select age,name,id,tel  from tb where age=22 and  name ='张三'

SQL

(5) or 关键字连接

用 or 分割开的条件, 如果 or 前面的列有索引, or 后面的列没有索引, 那么查询的时候前后索引都会失效

索引失效案例:

如果一定要 or 查用询, 可以考虑下 or 连接的条件列都加索引, 这样就不会失效了.

6, 使用 !=

7. like '%张'

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

冰冰很社恐

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值