在存儲過程中使用什麼更好:臨時表還是內存表?存儲過程中的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;
在這兩者中,我會使用臨時表格進行報告。
內存表包含跨用戶會話連接的數據,因此您必須每次都截斷它以確保您不會使用其他人的數據。假設你根據需要放入維護內存表所需的內容,這很好 - 從維護角度看,臨時表比較安全。
的臨時表將只存在於你的會話的持續時間。用Engine = Memory聲明的表將會持續存在於用戶會話/連接中,但只會存在於MySQL實例的生命週期中。所以如果MySQL重新啓動,表格就會消失。
爲什麼這隻限於兩種選擇?你可以這樣做:
CREATE TEMPORARY TABLE t (avg double) ENGINE=MEMORY;
雖然我不知道如何檢查內存引擎是否真的在這裏使用,但它的工作原理。
在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'
內存一樣GLOBAL TEMPORARY在ORACLE? – zloctb 2016-02-19 08:04:52