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

溫馨提示×

溫馨提示×

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

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

MySQL中臨時表如何使用

發布時間:2021-07-24 16:33:04 來源:億速云 閱讀:211 作者:Leah 欄目:數據庫

今天就跟大家聊聊有關MySQL中臨時表如何使用,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。

MySQL如何使用臨時表
 
【臨時表存儲】
MySQL臨時表分為“內存臨時表”和“磁盤臨時表”,其中內存臨時表使用MySQL的MEMORY存儲引擎,磁盤臨時表使用MySQL的MyISAM存儲引擎;
一般情況下,MySQL會先創建內存臨時表,但內存臨時表超過配置指定的值后,MySQL會將內存臨時表導出到磁盤臨時表。  www.2cto.com  
 
【使用臨時表的場景】
1)ORDER BY子句和GROUP BY子句不同,
例如:ORDERY BY price GROUP BY name;
 
2)在JOIN查詢中,ORDER BY或者GROUP BY使用了不是第一個表的列
例如:SELECT * from TableA, TableB ORDER BY TableA.price GROUP by TableB.name
 
3)ORDER BY中使用了DISTINCT關鍵字
ORDERY BY DISTINCT(price)
 
4)SELECT語句中指定了SQL_SMALL_RESULT關鍵字
SQL_SMALL_RESULT的意思就是告訴MySQL,結果會很小,請直接使用內存臨時表,不需要使用索引排序
SQL_SMALL_RESULT必須和GROUP BY、DISTINCT或DISTINCTROW一起使用
一般情況下,我們沒有必要使用這個選項,讓MySQL服務器選擇即可。
 
【直接使用磁盤臨時表的場景】
1)表包含TEXT或者BLOB列;
2)GROUP BY 或者 DISTINCT 子句中包含長度大于512字節的列;
3)使用UNION或者UNION ALL時,SELECT子句中包含大于512字節的列;
  www.2cto.com  
【臨時表相關配置】
tmp_table_size:指定系統創建的內存臨時表最大大小;

http://dev..com/doc/refman/5.1/en/server-system-variables.html#sysvar_tmp_table_size

 
max_heap_table_size: 指定用戶創建的內存表的最大大小;

http://dev.mysql.com/doc/refman/5.1/en/server-system-variables.html#sysvar_max_heap_table_size

 
注意:最終的系統創建的內存臨時表大小是取上述兩個配置值的最小值。
 
【表的設計原則】
使用臨時表一般都意味著性能比較低,特別是使用磁盤臨時表,性能更慢,因此我們在實際應用中應該盡量避免臨時表的使用。
如果實在無法避免,也應該盡量避免使用磁盤臨時表。
 
常見的方法有:
1)創建索引:在ORDER BY或者GROUP BY的列上創建索引,這樣可以避免使用臨時表;
2)分拆很長的列,可以避免使用磁盤臨時表:一般情況下,TEXT、BLOB,大于512字節的字符串,基本上都是為了顯示信息,而不會用于查詢條件,因此表設計的時候,應該將這些列獨立到另外一張表。  www.2cto.com  
 
【如何判斷使用了臨時表】
使用explain查看執行計劃,Extra列看到Using temporary就意味著使用了臨時表。

看完上述內容,你們對MySQL中臨時表如何使用有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。

向AI問一下細節

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

AI

岑溪市| 美姑县| 赞皇县| 中山市| 云林县| 麦盖提县| 阜平县| 正镶白旗| 阜宁县| 西贡区| 呈贡县| 沅陵县| 阜南县| 彰化县| 新余市| 体育| 南漳县| 交城县| 夹江县| 余江县| 开远市| 龙泉市| 信宜市| 七台河市| 定边县| 门头沟区| 隆昌县| 壤塘县| 印江| 新民市| 嘉定区| 商水县| 石台县| 吉安县| 大余县| 辽阳市| 湟源县| 白玉县| 乾安县| 汾阳市| 南阳市|