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

mysql 索引失效、联合索引失效场景和举例

索引失效

假设有一张user 表,表中包含索引
(id);
(name);
(birthday);
(name,age);

  1. 对索引字段进行函数操作
select name from user where year(birthday) = '2000';
  1. 使用模糊查询,查询中使用通配符
select name from user where name like '%益达%';
  1. 使用is null 或者 is not null
select name from user where name is null;
  1. 使用查询条件时,字段类型和索引类型不一致,假设原表中的索引为 integer.
select name from user where CAST(id AS CHAR) = '1';

联合索引失效

  1. 使用的查询条件没有命中联合索引最左边的索引(name,age)
select name from user where age > 10;
  1. 查询中使用了函数
select name from user where UPPER(name)='yida' and age>10;
  1. 查询中使用的数据类型和联合索引的字段类型不一致
select name from user where name = 'yida' and age > '10';
  1. 使用联合索引时,查询条件的顺序和索引的顺序不一致
select name from user where age >12 and name = 'yida';
  1. 复合索引列的离散值过大,mysql 会优先走全表扫描;

解决措施

  1. 确保查询条件中至少包含联合索引的第一列。

  2. 确保查询条件中的索引列类型和联合索引列类型一致。

  3. 将索引列类型进行显式转换,以避免隐式转换导致的索引失效问题。

  4. 确保查询条件中的索引列顺序和联合索引列顺序一致。

  5. 避免在查询条件中使用函数,或者尽可能减少函数的使用。

  6. 重新设计索引,或者将查询拆分为多个查询,以避免数据分布不均匀导致的索引失效问题。

http://www.lryc.cn/news/62062.html

相关文章:

  • 快速将PDF转换为图片:使用在线转换器的步骤
  • 什么是gpt一4-如何用上gpt-4
  • Docker 相关概念
  • STM32平衡小车 TB6612电机驱动学习
  • 动态加载 JS 文件
  • 14、lldb调试指令
  • 浏览器缓存策略:强缓存和协商缓存
  • 2023年Chat GPT 应用前景分析
  • 并发计算公式
  • “华为杯”研究生数学建模竞赛2020年-【华为杯】E题:能见度估计与预测(附获奖论文及python代码实现)
  • Arduino学习笔记3
  • BPMN2.0 任务-用户任务
  • David Silver Reinforcement Learning -- Markov process
  • 项目结束倒数2
  • VBA智慧办公9——图例控件教程
  • Presto VS Spark
  • 为什么我们能判断声音的远近
  • 那些关于DIP器件不得不说的坑
  • 论文笔记:基于U-Net深度学习网络的地震数据断层检测
  • kafka单节点快速搭建
  • 【MySQL】(6)常用函数
  • Linux学习 Day1
  • Hibernate中的一对多和多对多关系
  • Linux系统之部署Samba服务
  • 回顾产业互联网的发展历程,技术的支撑是必不可少的
  • 关于gas费优化问题
  • Linux——中断和时间管理(中)
  • 嵌入式软件中常见的 8 种数据结构详解
  • vue 修改当前路由参数并刷新界面
  • 视频处理之视频抽帧的python脚本