日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
mysql的內(nèi)部臨時(shí)表

什么是內(nèi)部臨時(shí)表?

成都創(chuàng)新互聯(lián)公司專業(yè)提供成都主機(jī)托管四川主機(jī)托管成都服務(wù)器托管四川服務(wù)器托管,支持按月付款!我們的承諾:貴族品質(zhì)、平民價(jià)格,機(jī)房位于中國電信/網(wǎng)通/移動(dòng)機(jī)房,溫江服務(wù)器托管服務(wù)有保障!

不同于手工創(chuàng)建的臨時(shí)表,在sql執(zhí)行過程中可能會(huì)用到臨時(shí)文件存儲(chǔ)查詢結(jié)果,稱為internal temporary table;

該過程由MySQL自動(dòng)完成,用戶無法手工干預(yù);

這些表或使用memory引擎存于內(nèi)存,或使用MyISAM引擎存于磁盤;

 

何時(shí)生成

使用order  by /group by的列并非全來自于join queue的第一個(gè)表

Distinct order by聯(lián)合使用

多表連接需要保存中間結(jié)果集

 

如何保存

SQL_SMALL_RESULT會(huì)使用內(nèi)存臨時(shí)表,除非包含必須使用磁盤臨時(shí)表的條件:

     當(dāng)表包含blob/text列,或group by/distinct的列大于512字節(jié)時(shí),必須使用磁盤臨時(shí)表;

     當(dāng)臨時(shí)表 > min(tmp_table_size, max_heap_table_size)時(shí),會(huì)自動(dòng)將內(nèi)存臨時(shí)表轉(zhuǎn)化為磁盤臨時(shí)表

 

可通過狀態(tài)變量created_tmp_tables/created_tmp_disk_tables查看內(nèi)部臨時(shí)表的使用情況

 

 

內(nèi)部臨時(shí)表某些情況下會(huì)自動(dòng)生成索引,以提升性能

MySQL does create two keys on internal temporary tables namely ‘group_key‘ and ‘distinct_key‘ in the following conditions:

If there is any aggregate function and/or group-by (group_key)

Distinct column name(group_key)

Distinct in combination with group-by/aggregation functions (distinct_key)

http://venublog.com/2010/03/08/when-indexes-are-created-in-internal-temporary-tables/

 

已經(jīng)有人開發(fā)相應(yīng)patch,可通過hint強(qiáng)行在內(nèi)部臨時(shí)表上創(chuàng)建index

SELECT

    SUM(aggrpt.imps) as imps,

    SUM(aggrpt.clicks) as clicks,

    SUM(aggrpt.pos) as pos

 

FROM aggrpt

LEFT JOIN

(

    SELECT

    DISTINCT ext_group_id, group_id

    FROM sub

) sub2  ON(sub2.ext_group_id=aggrpt.adgroupid)

 

GROUP BY

aggrpt.report_date,

aggrpt.campaignid,

aggrpt.adgroupid,

aggrpt.keywordid

ORDER BY NULL

INTO OUTFILE '/tmp/test-sub.txt'

--------------

 

Query OK, 47827 rows affected (6 min 47.48 sec)

 

有兩種方法改進(jìn):1 將子查詢改寫為一個(gè)臨時(shí)表,并在ext_group_id上創(chuàng)建索引;2對(duì)中間結(jié)果集添加索引,sub2 USE INDEX(ext_group_id) ON(sub2.ext_group_id=aggrpt.adgroupid)

改進(jìn)后的運(yùn)行時(shí)間

Query OK, 47827 rows affected (7.18 sec)

 

 

http://venublog.com/2010/03/06/how-to-improve-subqueries-derived-tables-performance/

 


網(wǎng)站標(biāo)題:mysql的內(nèi)部臨時(shí)表
文章鏈接:http://www.dlmjj.cn/article/jidiso.html