2009-11-20 84 views
9

在存储过程中使用什么更好:临时表还是内存表?存储过程中的MySQL临时与内存表

该表用于存储报告的摘要数据。

开发人员应该注意哪些折衷?

CREATE TEMPORARY TABLE t (avg (double)); 

CREATE TABLE t (avg (double)) ENGINE=MEMORY; 
+0

内存一样GLOBAL TEMPORARY在ORACLE? – zloctb 2016-02-19 08:04:52

回答

7

在这两者中,我会使用临时表格进行报告。

内存表包含跨用户会话连接的数据,因此您必须每次都截断它以确保您不会使用其他人的数据。假设你根据需要放入维护内存表所需的内容,这很好 - 从维护角度看,临时表比较安全。

4

的临时表将只存在于你的会话的持续时间。用Engine = Memory声明的表将会持续存在于用户会话/连接中,但只会存在于MySQL实例的生命周期中。所以如果MySQL重新启动,表格就会消失。

8

为什么这只限于两种选择?你可以这样做:

CREATE TEMPORARY TABLE t (avg double) ENGINE=MEMORY; 

虽然我不知道如何检查内存引擎是否真的在这里使用,但它的工作原理。