Как анализировать и использовать EXPLAIN для вызовов моей хранимой процедуры? Мне нужно оптимизировать время запроса, но похоже, что я не могу выполнить вызов EXPLAIN proc_name()?
Использование EXPLAIN для вызовов хранимых процедур MYSQL
Ответ 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