对MYSQL存储过程调用使用EXPLAIN

x7yiwoj4  于 2023-05-16  发布在  Mysql
关注(0)|答案(3)|浏览(167)

如何为存储过程调用分析和使用EXPLAIN?我需要优化查询时间,但是似乎没有地方可以执行EXPLAIN调用proc_name()?

wn9m85ua

wn9m85ua1#

你可以试试

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

cbwuti442#

目前你还不能解释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);
d4so4syb

d4so4syb3#

MySQL 5.7之前

EXPLAIN只对SELECT语句起作用,除非使用EXPLAIN tablename(DESCRIBE tablename的别名)

5.7后:

EXPLAIN使用SELECT DELETE INSERT REPLACE UPDATE语句

相关问题