2013-08-06 34 views
8

我對MySQL很新。我的問題可能是錯誤的,如果是的話請更正或解釋。MySQL表中的堆表和臨時表之間的區別?

我剛剛通過在Google上搜索定義來了解堆表和臨時表。 它們之間的確切區別和兩者的實時使用有什麼區別?

按我的知識和我讀:

堆表:表中存在的內存被稱爲HEAP表。在MySql中創建HEAP表時,用戶需要將TYPE指定爲HEAP。這些表現在更常被稱爲內存表。這些內存表從不具有「BLOB」或「TEXT」等數據類型的值。他們使用索引,使他們更快。

臨時表:在某些情況下,臨時表可能非常有用以保留臨時數據。臨時表是在當前客戶端會話終止時它們將被刪除。

回答

8

正如你所引用的,臨時表只在會話期間有效,而堆表存在於內存中。 因此,如果您不重新啓動數據庫,堆表可以存在很長時間。

一旦會話斷開,臨時表將被刪除。

臨時表不在客戶端之間共享,堆表共享。 因此,對於每個連接臨時表都是唯一的,對於第二個連接,不存在另一個連接的臨時表。

對於臨時表,您需要特殊權限(創建臨時表),而堆表只是另一個存儲引擎。