最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

淺談Mysql在什么情況下會使用內(nèi)部臨時表

 更新時間:2021年10月26日 09:18:48   作者:我和寧拼啦  
內(nèi)部臨時表是一種特殊輕量級的臨時表,本文主要介紹了Mysql在什么情況下會使用內(nèi)部臨時表,具有一定的參考價值,感興趣的小伙伴們可以參考一下

union執(zhí)行

為了便于分析,使用一下sql來進行舉例

CREATE TABLE t1 ( id INT PRIMARY KEY, a INT, b INT, INDEX ( a ) );

delimiter ;;
CREATE PROCEDURE idata ( ) BEGIN
DECLARE
        i INT;
 SET i = 1;
 WHILE
   ( i <= 1000 ) DO
   INSERT INTO t1
  VALUES
   ( i, i, i );
  SET i = i + 1;
 END WHILE;
 END;;

delimiter ;
CALL idata ( );

然后我們執(zhí)行以下sql

(select 1000 as f) union (select id from t1 order by id desc limit 2);

這段sql的語義是,取兩個子查詢的的并集,并且去重

可以看到,第二行的key是primary,說明第二個子查詢使用索引id。第三行的Extra字段,表示在子查詢union的時候,使用了臨時表(Using temporary)。
這個語句的執(zhí)行流程是這樣的:
1)創(chuàng)建一個內(nèi)存臨時表,這個臨時表只有一個整形字段f,并且f是主鍵字段
2)執(zhí)行第一個子查詢,將1000存在臨時表
3)執(zhí)行第二個子查詢,拿到第一行id=1000,并試圖插入到臨時表,但是由于1000這個值已經(jīng)存在臨時表了,違法了唯一性約束,所以插入失敗,接著取到第二行數(shù)據(jù)999,插入臨時表成功
4)從臨時表中按行取出數(shù)據(jù),返回結(jié)果,并刪除臨時表,結(jié)果中包含兩條數(shù)據(jù)就是1000和999
可以看到,臨時表起到了暫存數(shù)據(jù)的作用,而且存在唯一性約束,實現(xiàn)了union去重的語義

group by

另外一個常見的使用臨時表的例子就是group by,我們看一下以下sql

select id%10 as m, count(*) as c from t1 group by m;

這個語句就是根據(jù)t1表的數(shù)據(jù),根據(jù)id%10進行分組,并按照m的結(jié)果排序后輸出

在Extra字段中,我們看到了三個信息:

1)Using index,表示這個語句使用了覆蓋索引,選擇了索引 a;
2)Using temporary,表示使用了臨時表;
3)Using filesort,表示需要排序;

這個語句的執(zhí)行流程是這樣的:

1)創(chuàng)建內(nèi)存臨時表,表里有字段m和c,主鍵是m;
2)掃描表t1的索引a,依次取出葉子節(jié)點上面的id值,計算id%10的結(jié)果,記為x;

  • 如果臨時表沒有主鍵x,就插入一個記錄(x,1);
  • 如果表中有主鍵x的行,就將x這一行的c值加1;

3)遍歷完成之后,再根據(jù)字段m做排序,得到結(jié)果

內(nèi)存臨時表的大小是有限制的,參數(shù)tmp_table_size就是控制這個內(nèi)存大小的,默認是16M,如果內(nèi)存臨時表大小達到了上線,這時候就會把內(nèi)存臨時表轉(zhuǎn)成磁盤臨時表,磁盤臨時表的默認引擎是InnoDB,如果表的數(shù)據(jù)量很大,很可能查詢就會占用大量的磁盤空間

到此這篇關(guān)于淺談Mysql在什么情況下會使用內(nèi)部臨時表的文章就介紹到這了,更多相關(guān)Mysql 內(nèi)部臨時表內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • MySQL安裝出現(xiàn)The?configuration?for?MySQL?Server?8.0.28?has?failed.?You?can...錯誤的解決辦法

    MySQL安裝出現(xiàn)The?configuration?for?MySQL?Server?8.0.28?has

    這篇文章主要給大家介紹了MySQL安裝出現(xiàn)The?configuration?for?MySQL?Server?8.0.28?has?failed.?You?can...錯誤的解決辦法,文中通過圖文介紹的非常詳細,需要的朋友可以參考下
    2023-09-09
  • MySQL慢查日志的開啟方式與存儲格式詳析

    MySQL慢查日志的開啟方式與存儲格式詳析

    這篇文章主要給大家介紹了關(guān)于MySQL慢查日志的開啟方式與存儲格式的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家學(xué)習(xí)或者使用MySQL具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • 一文帶你徹底了解MySQL事務(wù)機制

    一文帶你徹底了解MySQL事務(wù)機制

    一個事情由n個單元組成,這n個單元在執(zhí)行過程中,要么同時成功,要么同時失敗,這就把n個單元放在了一個事務(wù)之中,這篇文章主要給大家詳細介紹MySQL的事務(wù)機制,感興趣的同學(xué)歡迎閱讀本文
    2023-06-06
  • Mysql?中的多表連接和連接類型詳解

    Mysql?中的多表連接和連接類型詳解

    這篇文章詳細介紹了MySQL中的多表連接及其各種類型,包括內(nèi)連接、左連接、右連接、全外連接、自連接和交叉連接,通過這些連接方式,可以將分散在不同表中的相關(guān)數(shù)據(jù)組合在一起,從而進行更復(fù)雜的查詢和分析,感興趣的朋友一起看看吧
    2025-01-01
  • MySQL中l(wèi)imit語法及用法小結(jié)

    MySQL中l(wèi)imit語法及用法小結(jié)

    LIMIT 是 MySQL 中的一個特殊關(guān)鍵字,用于指定查詢結(jié)果從哪條記錄開始顯示,一共顯示多少條記錄,本文重點介紹MySQL中l(wèi)imit語法及用法小結(jié),感興趣的朋友一起看看吧
    2023-10-10
  • Mariadb遠程登陸配置及問題解決

    Mariadb遠程登陸配置及問題解決

    這篇文章主要介紹了Mariadb遠程登陸配置及問題解決,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-08-08
  • mysql中insert語句的5種用法簡單示例

    mysql中insert語句的5種用法簡單示例

    這篇文章主要給大家介紹了關(guān)于mysql中insert語句的5種用法的相關(guān)資料,insert into是mysql中最常用的插入語句,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2023-08-08
  • SQL處理時間戳?xí)r如何解決時區(qū)問題實例詳解

    SQL處理時間戳?xí)r如何解決時區(qū)問題實例詳解

    時間戳?xí)r間不分東西南北、在地球的每一個角落都是相同的,下面這篇文章主要給大家介紹了關(guān)于SQL處理時間戳?xí)r如何解決時區(qū)問題的相關(guān)資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-08-08
  • MySQL數(shù)據(jù)庫本地事務(wù)原理解析

    MySQL數(shù)據(jù)庫本地事務(wù)原理解析

    事務(wù)是數(shù)據(jù)庫系統(tǒng)中的重要概念,了解這一律念是以正確的方式開發(fā)和數(shù)據(jù)庫交互的應(yīng)用程序的前提,今天通過本文給大家介紹MySQL數(shù)據(jù)庫本地事務(wù)原理解析,感興趣的朋友一起看看吧
    2022-01-01
  • MySQL解決Navicat設(shè)置默認字符串時的報錯問題

    MySQL解決Navicat設(shè)置默認字符串時的報錯問題

    本文主要介紹了MySQL解決Navicat設(shè)置默認字符串時的報錯,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06

最新評論

金昌市| 台南县| 方山县| 灵武市| 揭阳市| 江北区| 新田县| 汕头市| 三河市| 孝昌县| 苏州市| 凌云县| 鄯善县| 杭锦旗| 会同县| 满洲里市| 乐至县| 广南县| 年辖:市辖区| 那坡县| 壶关县| 石城县| 虞城县| 广丰县| 民丰县| 鄂托克旗| 阜新市| 张家川| 邢台县| 通州区| 无锡市| 汽车| 新和县| 沾益县| 中方县| 溧阳市| 鄯善县| 富宁县| 绩溪县| 通山县| 科尔|