【发布时间】:2016-05-26 10:40:46
【问题描述】:
使用JDBC Java执行存储过程,但是速度慢,所以想查数据库存储过程执行计划,你怎么看?SQL存储过程有几百行,数据库是Mysql,我知道查select语句执行计划是使用explain,但是存储过程怎么可能呢?
【问题讨论】:
使用JDBC Java执行存储过程,但是速度慢,所以想查数据库存储过程执行计划,你怎么看?SQL存储过程有几百行,数据库是Mysql,我知道查select语句执行计划是使用explain,但是存储过程怎么可能呢?
【问题讨论】:
如果您至少有 mysql v5.6.3,则可以使用 mysql optimizer tracer。
基本用法:
SET optimizer_trace="enabled=on";
SELECT ...; # your query here
SELECT * FROM INFORMATION_SCHEMA.OPTIMIZER_TRACE;
# possibly more queries...
# When done with tracing, disable it:
SET optimizer_trace="enabled=off";
可以追踪following queries:
选择; INSERT 或 REPLACE(使用 VALUES 或 SELECT); UPDATE/DELETE 及其多表变体;所有以前的以 EXPLAIN 为前缀的; SET(除非它操纵 optimizer_trace 系统变量);做; DECLARE/CASE/IF/RETURN(存储例程语言元素);称呼。如果这些语句之一在单独的步骤中准备和执行,则准备和执行将单独跟踪。
【讨论】:
尝试对存储过程中的 select 等语句单独使用说明。
【讨论】: