久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

MySQL中臨時表如何使用

184次閱讀
沒有評論

共計 1451 個字符,預計需要花費 4 分鐘才能閱讀完成。

自動寫代碼機器人,免費開通

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

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 中臨時表如何使用有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注丸趣 TV 行業資訊頻道,感謝大家的支持。

向 AI 問一下細節

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-12-04發表,共計1451字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 增城市| 兰西县| 财经| 库车县| 巨野县| 平塘县| 石狮市| 巴林左旗| 南丰县| 新巴尔虎右旗| 准格尔旗| 吴忠市| 阳山县| 廊坊市| 乌鲁木齐市| 苏尼特右旗| 九龙城区| 阳谷县| 呼图壁县| 天台县| 新乡县| 民乐县| 新民市| 社旗县| 金阳县| 阿克苏市| 锦州市| 胶南市| 宜丰县| 乐业县| 德昌县| 弥勒县| 共和县| 贡山| 盐池县| 工布江达县| 米脂县| 龙门县| 德清县| 疏勒县| 富顺县|