HelloCoder HelloCoder
首页
《Java小白求职之路》
《小白学Java》
计算机毕设
  • 一些免费计算机资源
  • 脚手架工具
  • 《从0到1学习Java多线程》
  • 《从0到1搭建服务器》
随笔
关于作者
首页
《Java小白求职之路》
《小白学Java》
计算机毕设
  • 一些免费计算机资源
  • 脚手架工具
  • 《从0到1学习Java多线程》
  • 《从0到1搭建服务器》
随笔
关于作者
  • 《LearnJavaToFindAJob》

    • 导读

    • 【初级】6~12k档

    • 【中级】12k-26k档

      • JVM进阶

      • Java进阶

      • MySQL

        • Innodb和MyISAM索引的区别
        • MySQL一些索引失效的场景和原理
        • MySQL如何行转列?
        • MySQL的架构和执行流程
        • MySQL的自增ID用完了会怎样?
        • MySQL索引的分类、何时使用、何时不使用、何时失效?
        • MySQL联合索引在B+数的存储结构和最左匹配原则原理
        • Mysql的索引和主键的区别
        • binlog、redolog、undolog的区别和作用
        • 什么是前缀索引,什么情况才使用?
        • 可重复读是否能解决幻读?
        • 我以为我对Mysql事务很熟,直到我遇到了阿里面试官
        • 聊聊MySQL索引的分类和结构吧
      • 中间件

      • 算法

      • 高阶

    • 【高级】26k+档

    • 大厂面试题

    • 求职建议

    • 面经

  • LearnJavaToFindAJob
  • 【中级】12k-26k档
  • MySQL
#MySQL #原理 #场景和原理
码农阿雨
2022-06-02
目录

MySQL一些索引失效的场景和原理

# 1、为什么is null 和 is not null 会导致索引失效?

主键索引无法存储null值,所以where的判断条件如果对字段进行了null值判断,将导致数据库放弃索引而进行全表查询。

但是普通索引,需要看数据库版本,数据量等,普通索引含有null的行也会走索引;数据库是否使用索引,还要看优化器如何做选择。

这里就说到 is null 和 is not null 走了索引:https://www.cnblogs.com/fanBlog/p/11938287.html

为什么主键索引列无法存储Null值?

因为主键索引是有序的。NULL值进入索引时,无法确定其应该放在哪里。(将索引列值进行建树,其中必然涉及到诸多的比较操作,null 值是不确定值无法比较,无法确定null出现在索引树的叶子节点位置。)

# 2、前导模糊查询不能利用索引

比如说 like '%XX'或者like '%XX%',

由于前面是模糊的,所以不能利用索引的顺序,必须一个个去找,看是否满足条件。这样会导致全索引扫描或者全表扫描。如果是这样的条件where code like 'A % ',就可以查找CODE中A开头的CODE的位置,当碰到B开头的数据时,就可以停止查找了,因为后面的数据一定不满足要求。这样就可以利用索引了。

# 3、or 失效原因

or 不走索引的原因,可能是数据量太少,制定执行计划时发现全表更快,故MySQL没有走索引。

如果数据量大,可以看到MySQL语句的 or 字段还是可以走索引的。

通常情况下,用UNION替换WHERE子句中的OR将会起到较好的效果,对索引列使用OR将造成全表扫描。

# 4、索引列使用函数

假如有 where month(t_modified)=7;,t_modified 是一个datetime 字段

B+ 树中,它原来是按照 2021-08-23 15:06:24这种格式有序排列的,它是没办法处理这个 7 的,于是就放弃了树搜索功能。

类似的,还有 类型的隐式转换、隐式字符编码转换 也是这个道理。

阅读全文
×

(为防止恶意爬虫)
扫码或搜索:HelloCoder
发送:290992
即可永久解锁本站全部文章

解锁
#MySQL#原理#场景和原理
上次更新: 2025-02-21 06:04:57
最近更新
01
《LeetCode 101》
02-21
02
IDEA、Golang、Pycharm破解安装
02-21
03
《LeetCode CookBook》
02-21
更多文章>
Theme by Vdoing | Copyright © 2020-2025 码农阿雨
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式