当前位置: 代码网 > it编程>数据库>Mysql > MySQL导致索引失效的几种情况

MySQL导致索引失效的几种情况

2025年05月12日 Mysql 我要评论
引言在 mysql 数据库中,索引是提升查询性能的关键工具。然而,在某些情况下,即使创建了索引,查询性能仍然可能不理想,甚至出现索引失效的现象。索引失效会导致数据库执行全表扫描,极大地降低查询效率,尤

引言

在 mysql 数据库中,索引是提升查询性能的关键工具。然而,在某些情况下,即使创建了索引,查询性能仍然可能不理想,甚至出现索引失效的现象。

索引失效会导致数据库执行全表扫描,极大地降低查询效率,尤其是在数据量较大的场景下。因此,了解常见的索引失效场景及其优化方案,对于数据库性能调优至关重要。

通过本文的学习,您将能够:

  • 识别常见的索引失效场景。
  • 理解索引失效的根本原因。
  • 掌握针对性的优化策略,避免索引失效。
  • 索引失效场景以及如何解决

1. 以%开头的like查询

优化方案:

首先扫描二级索引获取满足条件的primary key,在根据主键回表查询。

select * from
(select actor_id from actor where last_name like '%ni%') tmp 
inner join actor a on a.`actor_id`=tmp.actor_id

2. 类型的隐式转换(字符转数字会失效,数字转字符不会失效)

例如:

select * from actor where last_name=1;   -- 会失效
select * from actor where actor_id='1';  -- 不会失效

3. 联合索引不满足最左原则

对于复合索引,查询条件应该从索引的最左边列开始并且连续。

「改进方法」:

如果有一个索引是(a, b, c),那么应该保证查询条件从a开始,如where a = 1 and b = 2。

4. mysql优化器

估计使用索引比全部扫描要慢。

5. 使用or时

必须保证其前后都能有索引,如果其中任一不包含索引都会导致索引失效。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com