2012-08-06 167 views
6

即使我在顶部检查,是否需要在存储过程结束时添加DROP TEMPORARY TABLE IF EXISTS data;?是否有性能影响?在MySQL中存储过程结束时删除临时表

CREATE DEFINER=`TEST`@`%` PROCEDURE `TEST`() BEGIN 

    DROP TEMPORARY TABLE IF EXISTS data; 

    CREATE TEMPORARY TABLE data AS 
... 


END; 

回答

9

在MySQL中,数据库连接关闭时会自动删除临时表。如果您打算在存储过程之后打开连接,则临时表将存在于磁盘上,直到该连接关闭。性能影响取决于许多因素,例如您如何在服务器上配置临时表存储,表中有多少数据等。

只要您一放就将临时表完成了它。然后,您可以节省您对这些潜在性能影响的担忧

+0

如果您使用连接池,该怎么办? – 2012-08-06 22:44:44

+3

如果您使用连接池,很可能该表不会自动丢弃。更有理由一旦完成就明确放弃它。 – EkoostikMartin 2012-08-07 14:23:01