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

MySQL中怎么看是否走了索引

学生表

创建普通索引

create index index_name on student (name);

1.使用EXPLAIN查看执行计划(核心)

explain select * from student where name = '李明'

  • key字段:显示实际使用的索引名称。若值为NULL,表示未使用索引;若显示具体索引名,说明使用了对应索引。比如EXPLAIN SELECT * FROM student WHERE username = '李明',若key显示index_name ,意味着使用了name字段上的索引。

  • type字段:表示查询类型,反映查询性能,效率从高到低排序为system > const > eq_ref > ref > range > index > ALL 。ALL表示全表扫描,未使用索引;refrange等表示使用了索引,且越靠前性能越好。

  • possible_keys字段:列出可能使用的索引,与key字段对比,若possible_keys有索引但keyNULL,说明 MySQL 优化器未选择使用索引。

  • key_len字段:显示索引使用的字节数,可用于评估索引覆盖的列长度及类型,合理长度有助于判断索引是否正常使用。

  • Extra字段:包含额外信息,如Using index表示使用覆盖索引;Using where表示使用WHERE条件过滤数据;若出现Using filesort(文件排序)、Using temporary(使用临时表) ,说明查询未有效利用索引,性能可能不佳。

2.查看慢查询日志

确认慢查询日志配置

SHOW VARIABLES LIKE 'slow_query_log';         -- 是否开启慢查询日志(ON/OFF)
SHOW VARIABLES LIKE 'slow_query_log_file';    -- 日志文件路径
SHOW VARIABLES LIKE 'long_query_time';        -- 慢查询阈值(秒,默认 10 秒)

临时开启慢查询日志(测试环境)

-- 开启慢查询日志
SET GLOBAL slow_query_log = ON;
-- 设置日志文件路径(需确保路径存在且 MySQL 有写入权限)
SET GLOBAL slow_query_log_file = 'LAPTOP-RK330M4R-slow.log';  -- 确定在的路径
-- 设置慢查询阈值(如 0.1 秒,方便测试)
SET GLOBAL long_query_time = 0.1;

查看日志内容分析

使用命令行工具(如 catless)或文本编辑器打开日志文件:

less /var/lib/mysql/LAPTOP-RK330M4R-slow.log 

3.使用SHOW PROFILE(需要开启功能)

-- 开启profiling功能
SET profiling = 1;
-- 执行查询语句
SELECT * FROM student WHERE name = '李军';
-- 查看查询的执行信息
SHOW PROFILES;
-- 查看指定查询的详细执行信息
SHOW PROFILE FOR QUERY 1;  -- 替换为实际的 Query_ID
--g关闭功能
SET profiling = 1;

4、Performance Schema实时监控

SELECT DIGEST_TEXT AS 查询语句,ROWS_EXAMINED AS 扫描行数
FROM performance_schema.events_statements_summary_by_digest
WHERE DIGEST_TEXT LIKE '%student%';
  • ROWS_EXAMINED 远大于 1 → 可能未走索引,需结合 EXPLAIN 确认。

5、索引使用状态

SHOW STATUS LIKE 'Handler_read%';
  • Handler_read_rnd_next 值高 → 全表扫描多(未走索引)

总结

explain最快:直接判断结果中的key是否为NULL

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

相关文章:

  • 数据库中求最小函数依赖集-最后附解题过程
  • EMQX服务
  • DALI DT6与DALI DT8介绍
  • PlankAssembly 笔记 DeepWiki 正交视图三维重建
  • redis缓存与数据库协调读写机制设计
  • JAVA 集合进阶 泛型类、泛型方法、泛型接口
  • 【算法训练营Day03】链表part1
  • 随笔笔记记录5.28
  • 说一说SAP系统从Non-Unicode到Unicode的演化
  • 674SJBH校园外卖订餐系统V3
  • OpenLayers 图形绘制
  • 卫星地图 App 的实测体验深度解析
  • DeepSeek 赋能工业互联网:设备预测性维护的智能革新之路
  • 突破铁芯CT局限:罗氏线圈的“无磁饱和”技术深度解读
  • 身份证信息OCR识别提取
  • NIO知识点
  • ORM 框架的优缺点分析
  • QSS 的选择器
  • 端午时节,粽香四溢
  • 国密算法简述
  • 【DAY34】GPU训练及类的call方法
  • 从门店到移动端:按摩服务预约系统的架构演进与实践
  • 32、请求处理-【源码分析】-各种类型参数解析原理
  • Spring,SpringMVC,SpringBoot
  • RFID技术助力托盘运输线革新
  • grep/awk/sed笔记
  • 超高频RFID读写器天线分类及应用场景
  • 深入理解用于中断控制的特殊寄存器
  • pm2守护进程管理器
  • Word2Vec 生成词向量