fly*_*sic 13 mysql stored-procedures
如何分析和使用EXPLAIN进行存储过程调用?我需要优化查询时间,但似乎没有我可以做EXPLAIN调用proc_name()?
小智 21
你可以试试
set profiling=1;
call proc_name();
show profiles;
Run Code Online (Sandbox Code Playgroud)
目前你无法解释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);
Run Code Online (Sandbox Code Playgroud)
MySQL 5.7 之前:
EXPLAIN仅适用于SELECT语句,除非您使用EXPLAIN表名(它是以下语句的别名)DESCRIBE tablename
5.7之后:
EXPLAINSELECT DELETE INSERT REPLACE UPDATE与语句一起使用