我是否需要在存储过程结束时添加DROP TEMPORARY TABLE IF EXISTS data;
,即使我在顶部有检查?是否存在性能影响?
CREATE DEFINER=`TEST`@`%` PROCEDURE `TEST`() BEGIN
DROP TEMPORARY TABLE IF EXISTS data;
CREATE TEMPORARY TABLE data AS
...
END;
答案 0 :(得分:13)
在MySQL中,关闭数据库连接时会自动删除临时表。如果您计划在存储过程后打开连接,则临时表将存在于磁盘上,直到该连接关闭为止。性能影响取决于许多因素,例如您在服务器上配置临时表存储的方式,表中的数据量等等。
最好在完成后立即删除临时表。然后,您可以免除对这些潜在性能影响的担忧