2017-04-19 11 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への接続を開きます。接続が閉じられるまで、使用可能なテンポラリテーブルのスコープ