当前位置: 首页 > ai >正文

MySQL 索引不生效的情况

MySQL 索引不生效的 SQL 查询需要避免的情况

索引是提高 MySQL 查询性能的关键,但某些 SQL 写法会导致索引失效,从而影响查询效率。以下是需要避免的常见情况:

1. 使用 NOT!=<> 操作符

-- 索引可能失效
SELECT * FROM users WHERE status != 'active';

2. 使用 OR 连接条件(除非所有列都有索引)

-- 如果 age 或 name 中有一个没有索引,索引会失效
SELECT * FROM users WHERE age = 25 OR name = 'John';

3. 对索引列使用函数或运算

-- 索引失效
SELECT * FROM users WHERE YEAR(create_time) = 2023;
SELECT * FROM products WHERE price * 1.1 > 100;

4. 使用 LIKE 以通配符开头

-- 索引失效
SELECT * FROM users WHERE name LIKE '%ohn';-- 可以使用(索引有效)
SELECT * FROM users WHERE name LIKE 'Joh%';

5. 隐式类型转换

-- 如果 user_id 是字符串类型,索引会失效
SELECT * FROM users WHERE user_id = 12345;-- 应该写成
SELECT * FROM users WHERE user_id = '12345';

6. 使用 INNOT IN 时列表过大

-- 当列表非常大时,可能不会使用索引
SELECT * FROM users WHERE id IN (1,2,3,...,10000);

7. 多列索引未遵循最左前缀原则

-- 有联合索引 (col1, col2, col3)
-- 以下查询能使用索引
SELECT * FROM table WHERE col1 = 'a' AND col2 = 'b';-- 以下查询不能完全使用索引
SELECT * FROM table WHERE col2 = 'b' AND col3 = 'c';

8. 使用 IS NULLIS NOT NULL

-- 索引可能失效
SELECT * FROM users WHERE phone IS NULL;

9. 使用 ORDER BYWHERE 条件列不一致

-- 如果 name 有索引而 age 没有,排序会导致性能问题
SELECT * FROM users WHERE name LIKE 'A%' ORDER BY age;

10. 使用 DISTINCTGROUP BYUNION 不当

这些操作可能导致临时表创建,影响索引使用效率。

优化建议

  1. 使用 EXPLAIN 分析查询执行计划
  2. 合理设计索引,考虑查询模式
  3. 避免全表扫描,限制返回数据量
  4. 考虑使用覆盖索引(查询只使用索引列)

通过避免这些情况,可以确保 MySQL 查询能够有效利用索引,提高数据库性能。

http://www.xdnf.cn/news/3401.html

相关文章:

  • 【Linux】Linux基础概念
  • 树状数组 + 线段树
  • Java学习手册:Spring Security 安全框架
  • 多模态人工智能研究:视觉语言模型的过去、现在与未来
  • 51单片机驱动 矩阵键盘
  • SPOJ 11576 TRIP2 - A Famous King’s Trip 【Tarjan+欧拉回路】
  • Python清空Word段落样式的方法
  • PINNs案例——多介质分区温度场
  • c++环境和vscode常用的一些有用插件
  • 菲索旋转齿轮法:首次地面光速测量的科学魔术
  • Spring Boot 集成 Elasticsearch 的详细步骤
  • Arduino按键开关编程详解
  • Ubuntu 安装 MySQL8
  • Mybatis学习笔记
  • pytest——参数化
  • btrace1.0使用方法
  • AE模板 300个故障干扰损坏字幕条标题动画视频转场预设
  • mysql--索引
  • VulnHub-DC-2靶机
  • 【数据结构】励志大厂版·初阶(复习+刷题):栈与队列
  • 【Unity 游戏开发】角色控制模块技术要点拆解
  • 详细介绍Python-pandas-DataFrame全部 *功能* 函数
  • 【人工智能】图神经网络(GNN)的推理方法
  • 模型之FIM(Fill-In-the-Middle)补全
  • ADG网络故障恢复演练
  • tiktok web X-Bogus X-Gnarly 分析
  • FreeRTOS任务管理与通信机制详解
  • IPD研学:76页页基于IPD思想-华为需求管理培训方案【附全文阅读】
  • 初学python的我开始Leetcode题8-3
  • 第T10周:数据增强