использование EXPLAIN для вызовов хранимых процедур MYSQL - PullRequest
12 голосов
/ 22 марта 2011

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

Ответы [ 3 ]

20 голосов
/ 19 ноября 2011

Можно попробовать

set profiling=1;
call proc_name();
show profiles;
9 голосов
/ 22 марта 2011

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...