首頁 > 資料庫 > mysql教程 > mysql中什麼時候用臨時表

mysql中什麼時候用臨時表

WBOY
發布: 2022-05-26 17:11:26
原創
2560 人瀏覽過

mysql中用臨時表的時候:1、用到TEMPTABLE演算法或是UNION查詢中的視圖時;2、用到DISTINCT查詢並且加上ORDER BY時;3、SQL中用到「SQL_SMALL_RESULT 」選項時;4、用到FROM中的子查詢時等等。

mysql中什麼時候用臨時表

本教學操作環境:windows10系統、mysql8.0.22版本、Dell G3電腦。

mysql中什麼時候用臨時表

MySQL在以下幾種情況會建立臨時表:

1、UNION查詢;

2、用到TEMPTABLE演算法或是UNION查詢中的視圖;

3、ORDER BY和GROUP BY的子句不一樣時;

4、表格連接中,ORDER BY的列不是驅動表中的;

5、DISTINCT查詢並且加上ORDER BY時;

6、SQL中用到SQL_SMALL_RESULT選項時;

7、 FROM中的子查詢;

8、子查詢或semi-join時所建立的表;

EXPLAIN 查看執行計畫結果的Extra 欄位中,如果包含Using Temporary 就表示會用到臨時表。

當然了,如果臨時表中需要儲存的資料量超過了上限( tmp-table-size 或max-heap-table-size 中取其大者),那麼這時候就需要產生基於磁碟的臨時表了。

在下列幾種情況下,會建立磁碟暫存表:

1、資料表中包含BLOB/TEXT列;

#2、在GROUP BY 或DSTINCT 的欄位中有超過512字元的字元類型列(或超過512位元組的二進位類型列,在5.6.15之前只管是否超過512位元組);

3、在SELECT 、UNION、UNION ALL查詢中,存在最大長度超過512的欄位(對於字串類型是512個字符,對於二進位類型則是512位元組);

4、執行SHOW COLUMNS/FIELDS、DESCRIBE等SQL指令,因為它們的執行結果用到了BLOB列類型。

從5.7.5開始,新增一個系統選項internal_tmp_disk_storage_engine 可定義磁碟暫存資料表的引擎類型為 InnoDB,而在這以前,只能使用 MyISAM。而在5.6.3以後新增的系統選項 default_tmp_storage_engine 是控制 CREATE TEMPORARY TABLE所建立的臨時表的引擎類型,在以前預設是MEMORY,不要把這二者混淆了。

見下例:

mysql中什麼時候用臨時表

#推薦學習:mysql影片教學

#

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

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板