【问题标题】:Is temporary table reusable in MySQL?临时表可以在 MySQL 中重用吗?
【发布时间】:2017-09-15 12:30:16
【问题描述】:

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

/* 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. 会话是什么意思?当我在应用程序端并打开连接时,我可以重复使用临时表吗?我想知道这是否就是为什么这里有一个临时表。

【问题讨论】:

标签: mysql temp-tables


【解决方案1】:

数据库中的会话意味着打开和关闭连接之间的操作。

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

【讨论】:

    【解决方案2】:

    对于 SQL 连接,Session 是指你创建的一个连接。一旦你连接到你的数据库,指定的会话将由数据库服务器创建。

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

    类似问题here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-01-26
      • 2021-05-18
      • 2014-08-28
      • 1970-01-01
      • 2011-07-26
      • 2012-04-06
      • 1970-01-01
      • 2015-04-12
      相关资源
      最近更新 更多