2017-04-19 28 views
0

所以我的老闆給了我一個需要優化的存儲過程,因爲它很慢。該過程正在創建臨時表,並且看起來很奇怪:臨時表是否可以在MySQL中重用?

/* 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. 會話是什麼意思?當我在應用程序端並打開連接時,是否可以重用臨時表?我想知道這是爲什麼這裏有臨時表。
+1

https://dba.stackexchange.com/a/57976/10827 –

回答

1

數據庫中的會話表示打開關閉連接之間的操作。

例如,在應用程序方面,如果我嘗試調用存儲過程,並且在此之前我打開了一個到DB的連接。臨時表的可用範圍直到我說連接關閉