中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

mysql的內部臨時表

發布時間:2020-08-10 23:00:18 來源:ITPUB博客 閱讀:188 作者:風塵_NULL 欄目:建站服務器

什么是內部臨時表?

不同于手工創建的臨時表,在sql執行過程中可能會用到臨時文件存儲查詢結果,稱為internal temporary table

該過程由Mysql自動完成,用戶無法手工干預;

這些表或使用memory引擎存于內存,或使用MyISAM引擎存于磁盤;

 

何時生成

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

Distinct order by聯合使用

多表連接需要保存中間結果集

 

如何保存

SQL_SMALL_RESULT會使用內存臨時表,除非包含必須使用磁盤臨時表的條件:

     當表包含blob/text列,或group by/distinct的列大于512字節時,必須使用磁盤臨時表;

     當臨時表 > min(tmp_table_size, max_heap_table_size)時,會自動將內存臨時表轉化為磁盤臨時表

 

可通過狀態變量created_tmp_tables/created_tmp_disk_tables查看內部臨時表的使用情況

 

 

內部臨時表某些情況下會自動生成索引,以提升性能

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/

 

已經有人開發相應patch,可通過hint強行在內部臨時表上創建 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)

 

有兩種方法改進:將子查詢改寫為一個臨時表,并在ext_group_id上創建索引;2 對中間結果集添加索引 sub2 <strong>USE INDEX(ext_group_id)</strong> ON(sub2.ext_group_id=aggrpt.adgroupid)

改進后的運行時間

Query OK, 47827 rows affected (7.18 sec)

 

 

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

 

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

盐山县| 蛟河市| 洛扎县| 徐汇区| 荣成市| 焦作市| 澳门| 泗水县| 同江市| 克拉玛依市| 油尖旺区| 顺昌县| 柯坪县| 祁门县| 雷州市| 靖边县| 长子县| 会昌县| 团风县| 禹城市| 溧阳市| 平邑县| 林口县| 曲阜市| 聂拉木县| 东丰县| 左云县| 高平市| 旬邑县| 桑植县| 嘉荫县| 蓬溪县| 周宁县| 垣曲县| 金堂县| 怀宁县| 威远县| 灵石县| 柘城县| 西畴县| 侯马市|