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

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

相关文章:

  • springboot java.lang.ClassNotFoundException: dm.jdbc.driver.DmDriver应该如何解决
  • Java Spring 之拦截器HandlerInterceptor详解与实战
  • 解决方案:__cplusplus宏的值始终为199711L(即 C++98)
  • 分布式存储技术全景解析:从架构演进到场景实践
  • 循环神经网络(RNN)全面教程:从原理到实践
  • 图解深度学习 - 基于梯度的优化(梯度下降)
  • 学习STC51单片机21(芯片为STC89C52RCRC)
  • 历年西北工业大学计算机保研上机真题
  • DrissionPage WebPage模式:动态交互与高效爬取的完美平衡术
  • 使用原生前端技术封装一个组件
  • 近期手上的一个基于Function Grap(类AWS的Lambda)小项目的改造引发的思考
  • Feign服务注册到nacos 2.2.3
  • Spring中过滤器 RequestContextFilter 和 OncePerRequestFilter 的区别
  • 基于CNN的OFDM-IM信号检测系统设计与实现
  • Linux(8)——进程(控制篇——上)
  • JS浮点数精度问题
  • TypeScript 中高级类型 keyof 与 typeof的场景剖析。
  • 共享签名是什么
  • 打破建筑管理壁垒,IBMS智能系统赋能现代建筑协同增效
  • AUTOSAR图解==>AUTOSAR_SWS_MCUDriver
  • 可以免费创建网站的软件/搜索关键词排名查询
  • wordpress 查看文章id/优化排名工具
  • 北京市住房和城乡建设厅网站/优化关键词排名工具
  • 微小店网站建设比较好/网络营销的现状和发展趋势
  • 网站关键词怎么布局/网站建设苏州
  • 哪个网站有教做面食/深圳网站制作公司