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

MySQL中使用索引一定有效吗?如何排查索引效果?

MySQL中使用索引一定有效吗?如何排查索引效果?

一、不一定一定有效,以下是索引失效的几种情况

  1. 使用了联合索引却不符合最左匹配原则
  2. like模糊匹配的随意使用,比如占位符放在最左端
  3. or的随意使用,当只有一个索引,or连接了两个条件,那么索引就失效了
  4. 将表中的两个不同字段进行比较,如 age > id
  5. 使用了order by,order by 后面如果不是主键或者覆盖索引,会导致不走索引
  6. 索引中使用了运算
  7. 索引中使用了函数
  8. 随意的字段类型的使用,比如varchar类型字段用int来给予条件,mysql内部会对其进行数据类型转换,这个过程会使用函数,索引会失效;还有就是不同编码表的联表查询也会导致隐式字符编码转换,也会使用函数,索引失效
  9. 不同参数也会导致索引失效,不同的参数会导致mysql评估成本不一致,有时候会选择索引,有时候会选择全表扫描,特别是在复杂查询的时候。

二、使用explain排查索引效果

  1. type:访问类型
    1. ALL :全表查询,没有使用索引
    2. index:全索引扫描,对覆盖索引的全扫描(全扫描二级索引)
    3. range:索引检索给定范围的行(通过索引快速扫描)
  2. key:使用的索引,会显示索引的名称,如果值是NULL,就表示没有使用索引
  3. rows:扫描的行数
http://www.dtcms.com/a/122412.html

相关文章:

  • uniapp uni-collapse动态切换数据时高度不能自适应
  • 旅行世界宠物养殖合成游戏源码
  • SQL开发的智能助手:通义灵码在IntelliJ IDEA中的应用
  • 银河麒麟V10 Ollama+ShellGPT打造Shell AI助手——筑梦之路
  • 蓝桥杯 B3619 10 进制转 x 进制
  • 4.7学习总结 可变参数+集合工具类Collections+不可变集合
  • 分析一下HashMap内部是怎么实现的
  • JavaScript Date(日期)
  • HTTPS为何仍有安全漏洞?解析加密协议下的攻击面
  • Java后端开发-面试总结(集结版)
  • 11. git restore
  • VLLM V1 part 4 - KV cache管理
  • 数据库无法插入中文字符
  • Spring MVC 处理 HTTP 状态码、响应头和异常的完整示例
  • 12.实现一个简单的依赖注入容器
  • [免费]SpringBoot+Vue高考志愿填报系统【论文+源码+SQL脚本】
  • MySQL | 三大日志文件
  • KHARPA币:结合传统与区块链技术的DeFi DAO革命
  • Houdini20.5apex绑定模块入门学习笔记
  • 参考平面跨分割情况下的信号回流
  • 落地DevOps文化:运维变革的正确打开方式
  • C#里设计Modbus-RTU(Remote Terminal Unit)协议
  • STM32——RTC实时时钟
  • Windows 部署项目 apache + mod_wsgi,nginx + waitress
  • 栈与堆的本质区别:深入理解 Rust 的内存管理模型
  • Xilinx虚拟输入/输出(VIO)IP核详细介绍及使用示例
  • Smith-Waterman 算法(C++实现)
  • SpringBoot 接口限流Lua脚本接合Redis 服务熔断 自定义注解 接口保护
  • postman 安装及使用 [软件测试工具]
  • 如何根据不同文字内容批量生产手写的图片,模拟真人写的笔记(待验证)