在存储过程中使用什么更好:临时表还是内存表?存储过程中的MySQL临时与内存表
该表用于存储报告的摘要数据。
开发人员应该注意哪些折衷?
CREATE TEMPORARY TABLE t (avg (double));
或
CREATE TABLE t (avg (double)) ENGINE=MEMORY;
在存储过程中使用什么更好:临时表还是内存表?存储过程中的MySQL临时与内存表
该表用于存储报告的摘要数据。
开发人员应该注意哪些折衷?
CREATE TEMPORARY TABLE t (avg (double));
或
CREATE TABLE t (avg (double)) ENGINE=MEMORY;
在这两者中,我会使用临时表格进行报告。
内存表包含跨用户会话连接的数据,因此您必须每次都截断它以确保您不会使用其他人的数据。假设你根据需要放入维护内存表所需的内容,这很好 - 从维护角度看,临时表比较安全。
的临时表将只存在于你的会话的持续时间。用Engine = Memory声明的表将会持续存在于用户会话/连接中,但只会存在于MySQL实例的生命周期中。所以如果MySQL重新启动,表格就会消失。
为什么这只限于两种选择?你可以这样做:
CREATE TEMPORARY TABLE t (avg double) ENGINE=MEMORY;
虽然我不知道如何检查内存引擎是否真的在这里使用,但它的工作原理。
在MySQL中,临时表是严重的挫折:
http://dev.mysql.com/doc/refman/5.6/en/temporary-table-problems.html
You cannot refer to a TEMPORARY table more than once in the same query.
For example, the following does not work:
mysql> SELECT * FROM temp_table, temp_table AS t2;
ERROR 1137: Can't reopen table: 'temp_table'
内存一样GLOBAL TEMPORARY在ORACLE? – zloctb 2016-02-19 08:04:52