因此,我的老板给了我一个存储过程,需要优化,因为它是缓慢的。该过程正在过程中创建一个临时表,它看起来很奇怪:
/* 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前面的代码看上去不对,但我想确定临时表的功能。因此,我读到了关于临时表的文章,并认为临时表可以持续并且只能在一个会话中访问。我的问题是:
发布于 2017-04-19 10:31:34
数据库中的会话是指打开连接关闭之间的操作。
例如:在应用程序端,如果我试图调用存储过程,而在此之前,我会打开到临时表的DB.The作用域的连接,直到连接关闭为止。
发布于 2018-07-19 01:52:50
至于SQL连接,会话意味着创建一个连接。一旦连接到数据库,指定的会话将由数据库服务器创建。
作为SQL上公认的新手开发人员,当我需要通过许多表执行一个分支查询时,我总是选择临时表。(PS:我的经验表明,存储在临时表中的行将不会被更新,尽管它们的值已被更改)
类似的问题here。
https://stackoverflow.com/questions/43492982
复制相似问题