ストアドプロシージャで使用する方が良い:一時テーブルまたはメモリテーブル?ストアドプロシージャのMySQLテンポラリテーブルとメモリテーブル
このテーブルは、レポートのサマリーデータを格納するために使用します。
開発者が認識すべきトレードオフはありますか?
CREATE TEMPORARY TABLE t (avg (double));
または
CREATE TABLE t (avg (double)) ENGINE=MEMORY;
ストアドプロシージャで使用する方が良い:一時テーブルまたはメモリテーブル?ストアドプロシージャのMySQLテンポラリテーブルとメモリテーブル
このテーブルは、レポートのサマリーデータを格納するために使用します。
開発者が認識すべきトレードオフはありますか?
CREATE TEMPORARY TABLE t (avg (double));
または
CREATE TABLE t (avg (double)) ENGINE=MEMORY;
2人のうち、私は報告のために一時テーブルを使用します。
メモリテーブルには、ユーザーセッション間でデータが格納されているため、他のユーザーからのデータを使用しないように毎回切り捨てる必要があります。あなたのニーズに応じてメモリテーブルを維持するために必要なものを置いていると仮定すると、メンテナンスの観点から一時テーブルは少し安全です。
一時テーブルは、あなたのセッションの間に存在します。 Engine = Memoryで宣言されたテーブルは、ユーザーセッション/接続を越えて永続しますが、MySQLインスタンスの存続期間内にのみ存在します。したがって、MySQLが再起動された場合、テーブルは消えてしまいます。
これはなぜ2つのオプションに制限されますか?
メモリエンジンが実際にここで使用されているかどうかを確認する方法はわかりませんが、どのように動作しますか。 MySQLでは
は、一時テーブルを真剣に不自由している:
http://dev.mysql.com/doc/refman/5.6/en/temporary-table-problems.html
You cannot refer to a TEMPORARY table more than once in the same query.
For example, the following does not work:
mysql> SELECT * FROM temp_table, temp_table AS t2;
ERROR 1137: Can't reopen table: 'temp_table'
メモリは、ORACLEで同じGLOBAL TEMPORARYているのですか? – zloctb