欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時間:2018年09月12日 10:26:17   作者:葉金榮  
MySQL在很多情況下都會用到臨時表,下面這篇文章主要給大家介紹了關(guān)于MySQL在什么情況下會用到臨時表的相關(guān)資料,文中介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

臨時表介紹

什么是臨時表:MySQL用于存儲一些中間結(jié)果集的表,臨時表只在當(dāng)前連接可見,當(dāng)關(guān)閉連接時,Mysql會自動刪除表并釋放所有空間。為什么會產(chǎn)生臨時表:一般是由于復(fù)雜的SQL導(dǎo)致臨時表被大量創(chuàng)建

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

MySQL在以下幾種情況會創(chuàng)建臨時表:

1、UNION查詢;

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

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

4、表連接中,ORDER BY的列不是驅(qū)動表中的;

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

6、SQL中用到SQL_SMALL_RESULT選項時;

7、FROM中的子查詢;

8、子查詢或者semi-join時創(chuàng)建的表;

EXPLAIN 查看執(zhí)行計劃結(jié)果的 Extra 列中,如果包含 Using Temporary 就表示會用到臨時表。

當(dāng)然了,如果臨時表中需要存儲的數(shù)據(jù)量超過了上限( tmp-table-size 或 max-heap-table-size 中取其大者),這時候就需要生成基于磁盤的臨時表了。

在以下幾種情況下,會創(chuàng)建磁盤臨時表:

1、數(shù)據(jù)表中包含BLOB/TEXT列;

2、在 GROUP BY 或者 DSTINCT 的列中有超過 512字符 的字符類型列(或者超過 512字節(jié)的 二進(jìn)制類型列,在5.6.15之前只管是否超過512字節(jié));

3、在SELECT、UNION、UNION ALL查詢中,存在最大長度超過512的列(對于字符串類型是512個字符,對于二進(jìn)制類型則是512字節(jié));

4、執(zhí)行SHOW COLUMNS/FIELDS、DESCRIBE等SQL命令,因為它們的執(zhí)行結(jié)果用到了BLOB列類型。

從5.7.5開始,新增一個系統(tǒng)選項 internal_tmp_disk_storage_engine 可定義磁盤臨時表的引擎類型為 InnoDB,而在這以前,只能使用 MyISAM。而在5.6.3以后新增的系統(tǒng)選項 default_tmp_storage_engine 是控制 CREATE TEMPORARY TABLE 創(chuàng)建的臨時表的引擎類型,在以前默認(rèn)是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引擎的臨時表

總結(jié)

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

相關(guān)文章

  • 內(nèi)網(wǎng)ssh/mysql登錄緩慢的解決方法

    內(nèi)網(wǎng)ssh/mysql登錄緩慢的解決方法

    本文介紹了“內(nèi)網(wǎng)ssh/mysql登錄緩慢的解決方法”,需要的朋友可以參考一下
    2013-03-03
  • mysql中count(), group by, order by使用詳解

    mysql中count(), group by, order by使用詳解

    mysql中order by 排序查詢、asc升序、desc降序,group by 分組查詢、having 只能用于group by子句、作用于組內(nèi),having條件子句可以直接跟函數(shù)表達(dá)式。使用group by 子句的查詢語句需要使用聚合函數(shù)。
    2017-05-05
  • Mac os 解決無法使用localhost連接mysql問題

    Mac os 解決無法使用localhost連接mysql問題

    今天在mac上搭建好了php的環(huán)境,把先前在window、linux下運(yùn)行良好的程序放在mac上,居然出現(xiàn)訪問不了數(shù)據(jù)庫,數(shù)據(jù)庫連接的host用的是localhost,可以確認(rèn)數(shù)據(jù)庫配置是正確的,下面特為大家分享下
    2014-05-05
  • MYSQL索引建立需要注意以下幾點細(xì)節(jié)

    MYSQL索引建立需要注意以下幾點細(xì)節(jié)

    建立MYSQL索引時需要注意以下幾點:建立索引的時機(jī)/對于like/對于有多個條件的/開啟索引緩存/建立索引是有代價的等等,感興趣的你可以參考下本文,或許可以幫助到你
    2013-03-03
  • 為什么MySQL 使用timestamp可以無視時區(qū)問題.

    為什么MySQL 使用timestamp可以無視時區(qū)問題.

    這篇文章主要介紹了為什么MySQL timestamp可以無視時區(qū)問題,幫助大家更好的理解和使用MySQL,感興趣的朋友可以了解下
    2020-12-12
  • MySQL常用分庫分表方案匯總

    MySQL常用分庫分表方案匯總

    本文主要介紹了MySQL常用分庫分表方案匯總,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • navicat創(chuàng)建MySql定時任務(wù)的方法詳解

    navicat創(chuàng)建MySql定時任務(wù)的方法詳解

    這篇文章主要介紹了navicat創(chuàng)建MySql定時任務(wù)的方法詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10
  • Window環(huán)境下MySQL?UDF提權(quán)

    Window環(huán)境下MySQL?UDF提權(quán)

    本文章僅記錄某次內(nèi)網(wǎng)滲透過程中遇到的MySQL?采用UDF提權(quán)等方式進(jìn)行獲取權(quán)限,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧<BR>
    2023-03-03
  • MySQL入門(三) 數(shù)據(jù)庫表的查詢操作【重要】

    MySQL入門(三) 數(shù)據(jù)庫表的查詢操作【重要】

    本節(jié)比較重要,對數(shù)據(jù)表數(shù)據(jù)進(jìn)行查詢操作,其中可能大家不熟悉的就對于INNER JOIN(內(nèi)連接)、LEFT JOIN(左連接)、RIGHT JOIN(右連接)等一些復(fù)雜查詢。 通過本節(jié)的學(xué)習(xí),可以讓你知道這些基本的復(fù)雜查詢是怎么實現(xiàn)的,,需要的朋友可以參考下
    2018-07-07
  • 實現(xiàn)MySQL回滾的Python腳本的編寫教程

    實現(xiàn)MySQL回滾的Python腳本的編寫教程

    這篇文章主要介紹了實現(xiàn)MySQL回滾的Python腳本的編寫教程,文中的回滾針對的是DELETE語句的數(shù)據(jù)庫誤操作,需要的朋友可以參考下
    2015-11-11

最新評論