所以我的老板给了我一个需要优化的存储过程,因为它很慢。该过程在该过程中创建一个临时表,看起来很奇怪:
/* 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
之前的代码看起来不对,但我想确定临时表的作用。所以我读到了临时表并发现临时表持续且只能在单个会话中访问。我的问题:
答案 0 :(得分:1)
数据库中的会话表示打开连接关闭之间的操作。
EG。在应用程序端,如果我尝试调用存储过程,在此之前我打开与DB的连接。临时表的范围可用,直到我说连接关闭
答案 1 :(得分:0)
对于SQL连接,会话表示您创建的一个连接。与数据库建立连接后,指定的会话将由数据库服务器创建。
作为公认的SQL新手开发人员,当我需要通过许多表进行查询分支时,我总是选择临时表。(PS:我的经验表明,存储在临时表中的那些行将不会被更新值已更改)
类似的问题here。