首頁  >  文章  >  資料庫  >  什麼時候會用到臨時表? MySQL臨時表的使用總結

什麼時候會用到臨時表? MySQL臨時表的使用總結

php是最好的语言
php是最好的语言原創
2018-08-08 11:54:433970瀏覽

摘要: MySQL在許多情況下都會用到臨時表總結一下什麼時候會用到臨時表         什麼是臨時表MySQL用於儲存一些中間結果集的表臨時表只在當前連接可見當關閉連線時Mysql會自動刪除表並釋放所有空間。

MySQL在許多情況下都會用到臨時表,總結一下什麼時候會用到臨時表:

         什麼是臨時表:MySQL用來儲存一些中間結果集的表,臨時表只在目前連接可見,當關閉連接時,Mysql會自動刪除表並釋放所有空間。為什麼會產生臨時表:一般是因為複雜的SQL導致臨時表被大量創建

         臨時表分為兩種,一種是記憶體臨時表,一種是磁碟臨時表。記憶體臨時表採用的是memory儲存引擎,透過internal_tmp_disk_storage_engine參數來控制使用哪種儲存引擎,從mysql5.7.6之後預設為innodb儲存引擎,先前版本預設為myisam儲存引擎)。分別透過Created_tmp_disk_tables 和 Created_tmp_tables 兩個參數來查看產生了多少磁碟臨時表和所有產生的臨時表(記憶體和磁碟)。

         記憶體臨時表空間的大小由兩個參數控制:tmp_table_size 和 max_heap_table_size 。一般來說是透過兩個參數中較小的數來控制記憶體臨時表空間的最大值,而對於開始在記憶體中建立的臨時表,後來由於資料太大轉移到磁碟上的臨時表,只由max_heap_table_size參數控制。針對直接在磁碟上產生的臨時表,沒有大小控制。

         下列操作會使用至臨時表:

1ã  union查詢

2ã  對於檢視的操作,例如使用一些TEMPTABLELE、union或aggregation

##aggregation

# 3ã  子查詢

4ã  semi-join 包括not in、exist等

5ã  查詢產生的派生表

6ã  複雜的group by 和order by

7ã  Insert select 同一個表,mysql會產生一個臨時表快取select的行

8ã  多個表更新

9ã  GROUP_CONCAT() 或COUNT(DISTINCT) 語句

# #。 。 。

Mysql也會阻止記憶體表空間的使用,直接使用磁碟臨時表:

1ã  表中含有BLOB或TEXT欄位

2ã  使用union或union all時, select子句有大於512位元組的欄位

3ã  Show columns或desc 表的時候,有LOB或TEXT

4ã  GROUP BY 或DISTINCT 子句中包含長度大於512位元組的列

相關推薦:

mysql臨時表的使用

Mysql中的暫存表使用方法

以上是什麼時候會用到臨時表? MySQL臨時表的使用總結的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn