婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > MySQL問答系列之什么情況下會用到臨時表

MySQL問答系列之什么情況下會用到臨時表

熱門標簽:湘潭電銷機器人咨詢電話 外呼系統防封號違法嗎 高德地圖標注模式 寶應電信400電話辦理費用 外呼系統服務 如何在高德地圖標注新地址 電銷機器人針對的 高德地圖標注中心個人注冊 400電話辦理都選易號網

臨時表介紹

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

臨時表分為兩種,一種是內存臨時表,一種是磁盤臨時表。內存臨時表采用的是memory存儲引擎,磁盤臨時表采用的是myisam存儲引擎(磁盤臨時表也可以使用innodb存儲引擎,通過internal_tmp_disk_storage_engine參數來控制使用哪種存儲引擎,從mysql5.7.6之后默認為innodb存儲引擎,之前版本默認為myisam存儲引擎)。分別通過Created_tmp_disk_tables 和 Created_tmp_tables 兩個參數來查看產生了多少磁盤臨時表和所有產生的臨時表(內存和磁盤)。

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> set default_tmp_storage_engine = "InnoDB";
-rw-rw---- 1 mysql mysql 8558 Jul 7 15:22 #sql4b0e_10_0.frm -- InnoDB引擎的臨時表
 -rw-rw---- 1 mysql mysql 98304 Jul 7 15:22 #sql4b0e_10_0.ibd
-rw-rw---- 1 mysql mysql 8558 Jul 7 15:25 #sql4b0e_10_2.frm

mysql> set default_tmp_storage_engine = "MyISAM";
-rw-rw---- 1 mysql mysql 0 Jul 7 15:25 #sql4b0e_10_2.MYD -- MyISAM引擎的臨時表
 -rw-rw---- 1 mysql mysql 1024 Jul 7 15:25 #sql4b0e_10_2.MYI

mysql> set default_tmp_storage_engine = "MEMORY";
-rw-rw---- 1 mysql mysql 8558 Jul 7 15:26 #sql4b0e_10_3.frm -- MEMORY引擎的臨時表

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

您可能感興趣的文章:
  • Mysql臨時表及分區表區別詳解
  • Mysql臨時表原理及創建方法解析
  • mysql臨時表用法分析【查詢結果可存在臨時表中】
  • MySQL 5.7臨時表空間如何玩才能不掉坑里詳解
  • 關于JDBC與MySQL臨時表空間的深入解析
  • MySQL臨時表的簡單用法介紹
  • MySQL中Update、select聯用操作單表、多表,及視圖與臨時表的區別
  • MySQL兩種臨時表的用法詳解
  • 淺談MySQL臨時表與派生表
  • MySQL中臨時表的基本創建與使用教程
  • MySQL中關于臨時表的一些基本使用方法
  • MySQL使用臨時表加速查詢的方法
  • MySQL中臨時表的使用示例

標簽:佛山 蘭州 黔南 賀州 南充 黃山 宿遷 馬鞍山

巨人網絡通訊聲明:本文標題《MySQL問答系列之什么情況下會用到臨時表》,本文關鍵詞  MySQL,問答,系列,之,什么,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《MySQL問答系列之什么情況下會用到臨時表》相關的同類信息!
  • 本頁收集關于MySQL問答系列之什么情況下會用到臨時表的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 德阳市| 稷山县| 宁阳县| 古交市| 锡林浩特市| 乐业县| 安远县| 武邑县| 会泽县| 富源县| 云和县| 菏泽市| 迁安市| 阿鲁科尔沁旗| 高台县| 海门市| 衡山县| 崇文区| 梁河县| SHOW| 东莞市| 黄梅县| 峨眉山市| 蒲江县| 浮山县| 阿巴嘎旗| 武汉市| 巴南区| 仙居县| 深水埗区| 东平县| 始兴县| 万源市| 肃南| 东安县| 西和县| 和政县| 绥阳县| 庄浪县| 呼和浩特市| 涪陵区|