MySQL临时与存储过程中的内存表

Yad*_*ada 9 mysql stored-procedures

在存储过程中使用什么更好:临时表或内存表?

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

是否有开发人员应注意的权衡?

CREATE TEMPORARY TABLE t (avg (double));
Run Code Online (Sandbox Code Playgroud)

要么

CREATE TABLE t (avg (double)) ENGINE=MEMORY;
Run Code Online (Sandbox Code Playgroud)

Elo*_*off 10

为什么这仅限于两个选项?你可以做:

CREATE TEMPORARY TABLE t (avg double) ENGINE=MEMORY;
Run Code Online (Sandbox Code Playgroud)

哪个有效,虽然我不确定如何检查内存引擎是否实际在这里使用.


OMG*_*ies 7

在这两个中,我会使用临时表进行报告.

内存表保存用户会话和连接之间的数据,因此您必须每次都截断它以确保您不会使用其他人的数据.假设您根据需要添加了维护内存表所需的内容,这很好 - 从维护角度来看,临时表更安全一些.


Cod*_*lan 5

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