【发布时间】:2011-07-20 08:43:44
【问题描述】:
如何为我的存储过程调用分析和使用 EXPLAIN? 我需要优化查询时间,但是似乎没有地方可以进行 EXPLAIN 调用 proc_name() ?
【问题讨论】:
如何为我的存储过程调用分析和使用 EXPLAIN? 我需要优化查询时间,但是似乎没有地方可以进行 EXPLAIN 调用 proc_name() ?
【问题讨论】:
你可以试试
set profiling=1;
call proc_name();
show profiles;
【讨论】:
目前您无法解释 mysql 中的存储过程 - 但您可以这样做:
drop procedure if exists get_user;
delimiter #
create procedure get_user
(
in p_user_id int unsigned,
in p_explain tinyint unsigned
)
begin
if (p_explain) then
explain select * from users where user_id = p_user_id;
end if;
select * from users where user_id = p_user_id;
end#
delimiter ;
call get_user(1,1);
【讨论】:
EXPLAIN 仅适用于 SELECT 语句,除非您使用 EXPLAIN 表名,它是 DESCRIBE 表名的别名
【讨论】:
EXPLAIN 与SELECT DELETE INSERT REPLACE UPDATE 语句一起使用,如MySQL 5.7 doc 中所述