前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >常见索引失效的情况

常见索引失效的情况

作者头像
GeekLiHua
发布2025-01-21 16:12:49
发布2025-01-21 16:12:49
6300
代码可运行
举报
文章被收录于专栏:JavaJava
运行总次数:0
代码可运行

常见索引失效的情况

LIKE查询以通配符开头

代码语言:javascript
代码运行次数:0
复制
SELECT * FROM users WHERE name LIKE '%smith';

OR语句前后没有同时使用索引

代码语言:javascript
代码运行次数:0
复制
SELECT * FROM users WHERE name = 'John' OR email = 'john@example.com';

联合索引未遵循最左前缀原则

代码语言:javascript
代码运行次数:0
复制
-- 假设有一个(name, email)的联合索引
SELECT * FROM users WHERE email = 'john@example.com';

索引列数据类型出现隐式转换

代码语言:javascript
代码运行次数:0
复制
SELECT * FROM users WHERE id = '123'; -- id是整型,但查询条件是字符串

对索引列进行计算或使用函数

代码语言:javascript
代码运行次数:0
复制
SELECT * FROM users WHERE id * 2 = 246;

ORDER BY使用错误

代码语言:javascript
代码运行次数:0
复制
-- 假设name字段没有索引
SELECT * FROM users ORDER BY name;

全表扫描速度比索引速度快

代码语言:javascript
代码运行次数:0
复制
-- 假设users表只有很少的记录
SELECT * FROM users WHERE id = 1;

WHERE子句中使用参数

代码语言:javascript
代码运行次数:0
复制
-- 假设MySQL版本导致参数化查询时索引失效
PREPARE stmt FROM 'SELECT * FROM users WHERE name = ?';
SET @name = 'John';
EXECUTE stmt USING @name;

数据类型不匹配

代码语言:javascript
代码运行次数:0
复制
SELECT * FROM users WHERE name = 123; -- name字段是字符串类型,但查询条件是整型

使用is null和is not null时未注意字段是否允许为空

代码语言:javascript
代码运行次数:0
复制
-- 假设name字段不允许为空
SELECT * FROM users WHERE name IS NULL;

字符类型字段在查询时未加引号

代码语言:javascript
代码运行次数:0
复制
SELECT * FROM users WHERE name = 123; -- name字段是字符串类型,查询条件未加引号
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-01-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 常见索引失效的情况
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档