Использование EXPLAIN для вызовов хранимых процедур MYSQL

Как анализировать и использовать EXPLAIN для вызовов моей хранимой процедуры? Мне нужно оптимизировать время запроса, но похоже, что я не могу выполнить вызов EXPLAIN proc_name()?

Ответ 1

Вы можете попробовать

set profiling=1;
call proc_name();
show profiles;

Ответ 2

в настоящее время вы не можете объяснить хранимые процедуры в 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);

Ответ 3

EXPLAIN работает только в операторах SELECT, за исключением тех случаев, когда вы используете tablename EXPLAIN, которое является псевдонимом DESCRIBE tablename