2012-08-06 159 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