临时表是否可以在MySQL中重用?

时间:2017-04-19 10:24:26

标签: mysql temp-tables

所以我的老板给了我一个需要优化的存储过程,因为它很慢。该过程在该过程中创建一个临时表,看起来很奇怪:

/* pseudocode for brevity */
create temp_table;

insert into temp_table (...) 
    select ... 
    from other_table 
    inner join ...
    inner join ...
    where condition

select * from temp_table

就是这样。代码仅将数据插入临时表中以便立即检索。这就是我所做的,我删除了临时表并直接返回所选记录:

/* pseudocode for brevity */
select ... 
from other_table 
inner join ...
inner join ...
where condition

之前的代码看起来不对,但我想确定临时表的作用。所以我读到了临时表并发现临时表持续且只能在单个会话中访问。我的问题:

  1. 会话是什么意思?当我在应用程序端并打开连接时,我可以重用临时表吗?我想知道这是不是这里有临时表的原因。

2 个答案:

答案 0 :(得分:1)

数据库中的会话表示打开连接关闭之间的操作。

EG。在应用程序端,如果我尝试调用存储过程,在此之前我打开与DB的连接。临时表的范围可用,直到我说连接关闭

答案 1 :(得分:0)

对于SQL连接,会话表示您创建的一个连接。与数据库建立连接后,指定的会话将由数据库服务器创建。

作为公认的SQL新手开发人员,当我需要通过许多表进行查询分支时,我总是选择临时表。(PS:我的经验表明,存储在临时表中的那些行将不会被更新值已更改)

类似的问题here