捂脸斋

江山风月 🌘 本无常主 🌈 闲者便是主人 🍃🍃🍃

使用profiles和explain查看并验证MySQL回表效率

操作步骤

  1. 打开profiling

    1
    2
    3
    - 查看并打开profiling开关。会话关闭后,profiling会自动关闭。
    show variables like 'profiling';
    set profiling = 'ON';
  2. 执行SQL

  3. 查看执行效率

    1
    show profiles;

案例

使用explain,验证非覆盖索引下的回表性能

数据库现场

Innodb引擎;一张370W数据的表,主键聚簇索引,ppid二级索引。

所有数据的ppid均相同,则非覆盖索引查询时,会最大化回表次数,放大性能差距。

对比以下两条SQL的执行效率。

1
2
select id from tbl where ppid = 'ppid-example';
select insert_time from tbl where ppid = 'ppid-example';

结果

对比2、4两条SQL,发现执行时间相差巨大。多余的时间是由逐次回表导致的。

使用explain查看执行计划,也可以从旁验证。