即使在存储过程的开头已经有检查,我是否需要在结尾处添加DROP TEMPORARY TABLE IF EXISTS data;
?这样做会对性能产生影响吗?
CREATE DEFINER=`TEST`@`%` PROCEDURE `TEST`() BEGIN
DROP TEMPORARY TABLE IF EXISTS data;
CREATE TEMPORARY TABLE data AS
...
END;
即使在存储过程的开头已经有检查,我是否需要在结尾处添加DROP TEMPORARY TABLE IF EXISTS data;
?这样做会对性能产生影响吗?
CREATE DEFINER=`TEST`@`%` PROCEDURE `TEST`() BEGIN
DROP TEMPORARY TABLE IF EXISTS data;
CREATE TEMPORARY TABLE data AS
...
END;
在MySQL中,临时表会在数据库连接关闭时自动删除。如果您计划在存储过程之后保持连接处于打开状态,则临时表将一直存在于磁盘上,直到该连接被关闭。性能影响取决于许多因素,例如您如何配置服务器上的临时表存储,表中有多少数据等。
最佳实践是在完成使用临时表后立即将其删除。这样可以彻底避免潜在的性能问题。