欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 美景 > MySQL一些常见的索引失效情况

MySQL一些常见的索引失效情况

2025/2/13 9:43:53 来源:https://blog.csdn.net/yajie_12/article/details/145597467  浏览:    关键词:MySQL一些常见的索引失效情况

MySQL一些常见的索引失效情况:

  1. 索引列使用函数或表达式
    当对索引列使用函数或表达式时,MySQL 无法直接使用索引来查找数据,因为函数或表达式的结果是动态计算的,破坏了索引的有序性。
    示例:
    sql-- 假设 age 列上有索引
    SELECT * FROM users WHERE YEAR(birth_date) = 1990;
    在这个查询中,YEAR(birth_date) 对索引列 birth_date 使用了函数,索引会失效。可以将查询改写为范围查询来使用索引:
    sqlSELECT * FROM users WHERE birth_date BETWEEN ‘1990-01-01’ AND ‘1990-12-31’;
  2. 隐式类型转换
    当查询条件中的数据类型与索引列的数据类型不一致,并且发生隐式类型转换时,索引可能会失效。
    示例:
    sql-- 假设 id 列是整数类型,并且有索引
    SELECT * FROM users WHERE id = ‘123’;
    这里将字符串 ‘123’ 与整数类型的 id 列进行比较,MySQL 会对 id 列进行隐式类型转换,导致索引失效。应使用正确的数据类型:
    sqlSELECT * FROM users WHERE id = 123;
  3. 模糊查询以通配符开头
    在使用 LIKE 进行模糊查询时,如果通配符 % 位于字符串的开头,索引将无法有效使用。
    示例:
    sql-- 假设 name 列上有索引
    SELECT * FROM users WHERE name LIKE ‘%John’;
    由于 % 在开头,My

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com