查看“什么情况下不走索引?”的源代码
←
什么情况下不走索引?
跳到导航
跳到搜索
因为以下原因,您没有权限编辑本页:
您所请求的操作仅限于该用户组的用户使用:
用户
您可以查看和复制此页面的源代码。
1. 数据类型不一致 例如,在查询条件中,列的数据类型是整数,但查询值是字符串。例如,表中的 <code>id</code> 列是整数类型,而查询语句是 <code>WHERE id = '1'</code> ,而不是 <code>WHERE id = 1</code> ,这种情况下可能不走索引。 2. 对索引列进行函数操作或表达式计算 比如,<code>WHERE DATE(create_time) = '2024-07-15'</code> ,而不是 <code>WHERE create_time = '2024-07-15'</code> ,对索引列 <code>create_time</code> 进行了函数 <code>DATE()</code> 操作,可能导致无法使用索引。 3. 模糊查询中以通配符开头 像 <code>LIKE '%value'</code> 这样以 <code>%</code> 开头的模糊查询,通常无法使用索引。但 <code>LIKE 'value%'</code> 这种以具体值开头的模糊查询可能会使用索引。 4. 索引列上存在大量重复值 如果索引列中的数据重复性很高,比如性别列只有 <code>男</code> 和 <code>女</code> 两种值,此时使用索引的效果可能不明显,MySQL 可能会选择全表扫描。 5. 表数据量小 当表中的数据量非常小时,MySQL 优化器可能会认为全表扫描比使用索引更快。 6. 条件中 OR 连接的多个条件中只有部分列有索引 例如,表中有 <code>id</code> 和 <code>name</code> 列,分别有索引,但查询语句是 <code>WHERE id = 1 OR name = 'John'</code> ,可能不会使用索引。 7. 违反最左前缀原则 对于复合索引,如果查询条件没有遵循最左前缀原则,可能无法使用索引。例如,索引是 <code>(col1, col2, col3)</code> ,而查询条件是 <code>WHERE col3 = 'value'</code> ,就不会使用索引。 8. 隐式类型转换 当查询条件中的值与表中列的类型不匹配,导致隐式类型转换时,可能不会使用索引。
返回至
什么情况下不走索引?
。
导航菜单
个人工具
登录
名字空间
页面
讨论
变种
视图
阅读
查看源代码
查看历史
更多
搜索
导航
首页
Spring Boot 2 零基础入门
Spring Cloud
Spring Boot
设计模式之禅
VUE
Vuex
Maven
算法
技能树
Wireshark
IntelliJ IDEA
ElasticSearch
VirtualBox
软考
正则表达式
程序员精讲
软件设计师精讲
初级程序员 历年真题
C
SQL
Java
FFmpeg
Redis
Kafka
MySQL
Spring
Docker
JMeter
Apache
Linux
Windows
Git
ZooKeeper
设计模式
Python
MyBatis
软件
数学
PHP
IntelliJ IDEA
CS基础知识
网络
项目
未分类
MediaWiki
镜像
问题
健身
国债
英语
烹饪
常见术语
MediaWiki帮助
工具
链入页面
相关更改
特殊页面
页面信息