五月综合激情婷婷六月,日韩欧美国产一区不卡,他扒开我内裤强吻我下面视频 ,无套内射无矿码免费看黄,天天躁,日日躁,狠狠躁

新聞動(dòng)態(tài)

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

發(fā)布日期:2022-02-05 17:04 | 文章來源:CSDN

union執(zhí)行

為了便于分析,使用一下sql來進(jìn)行舉例

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的語義是,取兩個(gè)子查詢的的并集,并且去重

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

group by

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

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

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

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

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

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

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

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

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

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

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

香港快速服務(wù)器

版權(quán)聲明:本站文章來源標(biāo)注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請(qǐng)保持原文完整并注明來源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非maisonbaluchon.cn所屬的服務(wù)器上建立鏡像,否則將依法追究法律責(zé)任。本站部分內(nèi)容來源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來,僅供學(xué)習(xí)參考,不代表本站立場(chǎng),如有內(nèi)容涉嫌侵權(quán),請(qǐng)聯(lián)系alex-e#qq.com處理。

相關(guān)文章

實(shí)時(shí)開通

自選配置、實(shí)時(shí)開通

免備案

全球線路精選!

全天候客戶服務(wù)

7x24全年不間斷在線

專屬顧問服務(wù)

1對(duì)1客戶咨詢顧問

在線
客服

在線客服:7*24小時(shí)在線

客服
熱線

400-630-3752
7*24小時(shí)客服服務(wù)熱線

關(guān)注
微信

關(guān)注官方微信
頂部