你知道什么情况下 MySQL 不走索引吗?
面试宝典
2023-06-12
Web前端开发工程师
62
以下是 MySQL 不走索引的情况:
1. 当查询条件使用了函数:在查询条件中使用函数,MySQL 无法使用索引进行优化。
2. 当查询条件是范围查询:如果查询条件是对索引列进行了范围查询(例如:>、<、>=、<=、BETWEEN 和 IN),则 MySQL 只能使用索引的一部分。
3. 当查询条件使用了 NOT:如果查询条件是 NOT IN 或 NOT EXISTS 这类条件,MySQL 将不会使用索引优化,因为这种查询需要对整张表进行扫描。
4. 当查询条件使用了 LIKE:如果查询条件中使用了 LIKE%,则 MySQL 可能不会使用索引优化。因为索引通常是按照升序存储的,LIKE% 查询需要扫描整个索引。
5. 数据量过大:如果表中数据量太大,索引查询就会变得很慢,因为需要从磁盘读取大量数据。
6. 当表使用了不合适的数据类型:如果表中的列使用了不合适的数据类型,就可能无法使用索引优化查询。例如,在字符串列上进行数值比较时,MySQL 可能无法使用索引。
7. 当 MySQL 估计使用全表扫描比使用索引更快:如果 MySQL 认为使用全表扫描比使用索引更快,则它将不会使用索引。
1. 当查询条件使用了函数:在查询条件中使用函数,MySQL 无法使用索引进行优化。
2. 当查询条件是范围查询:如果查询条件是对索引列进行了范围查询(例如:>、<、>=、<=、BETWEEN 和 IN),则 MySQL 只能使用索引的一部分。
3. 当查询条件使用了 NOT:如果查询条件是 NOT IN 或 NOT EXISTS 这类条件,MySQL 将不会使用索引优化,因为这种查询需要对整张表进行扫描。
4. 当查询条件使用了 LIKE:如果查询条件中使用了 LIKE%,则 MySQL 可能不会使用索引优化。因为索引通常是按照升序存储的,LIKE% 查询需要扫描整个索引。
5. 数据量过大:如果表中数据量太大,索引查询就会变得很慢,因为需要从磁盘读取大量数据。
6. 当表使用了不合适的数据类型:如果表中的列使用了不合适的数据类型,就可能无法使用索引优化查询。例如,在字符串列上进行数值比较时,MySQL 可能无法使用索引。
7. 当 MySQL 估计使用全表扫描比使用索引更快:如果 MySQL 认为使用全表扫描比使用索引更快,则它将不会使用索引。
-
上一篇
你知道什么情况下 MySQL 不走索引吗?
<ul><li>like这种模糊查询的时候,%在前面不走索引,%在后面走索引</li><li>用 <strong>索引列计算</strong> 的时候不走索引 比如:select * from student where age + 8 = 18</li><li>索引引用函数的时候不走索引 比如:select * from student where concat(‘name’,‘哈’) =‘王哈哈’</li><li>索引用了!=,not,in,or,not in的时候不走索引</li><li>null列的时候不走索引</li></ul><h4> 数据库的类型转换了不走索引</h4><ul><li>组合索引的时候必须 <strong>满足左匹配原则</strong></li><li>查询的时候只想取一条数据,那么要用limit 1</li></ul><p><br></p>
-
下一篇
你知道什么情况下 MySQL 不走索引吗?
你知道什么情况下 MySQL 不走索引吗?
相关文章
- 请解释下PHP中会话(session)和Cookie(cookie)的作用。
- PHP中如何处理文件上传和下载?
- 在PHP中,Magic Method都有哪些,并举例说明它们的作用?
- 请举例说明PHP中如何处理异常?
- PHP7和PHP5的性能上有什么差别?
- 请解释一下PHP中的MVC模式是如何工作的?
- 请给一个例子解释一下PHP中的闭包函数是什么?
- 请解释HTTP的基本概念,以及在Golang中如何使用HTTP?
- PHP中如何进行单元测试以及如何在开发过程中保证代码质量?
- 请列出与PHP相关的缓存机制及其优缺点。
- 请描述在Golang中使用MongoDB时的最佳实践。
- 如何在Golang中实现单例模式?
- 请提供至少三个通过PHP实现的网站性能优化技巧。
- 请问PHP中如何实现多线程?
- 聊一下高并发和高性能的区别和联系?
- 如何通过PHP来保护您的代码免受SQL注入攻击?
- 请谈谈您对PHP的垃圾回收机制的了解及实践。
- 请解释什么是defer语句,以及它有什么作用?
- PHP中常用的设计模式有哪些?
- 如何在Golang中进行并发编程?
微信收款码
支付宝收款码