程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> 關於MYSQL數據庫 >> MySQL表設計優化與索引 (七)

MySQL表設計優化與索引 (七)

編輯:關於MYSQL數據庫
如何避免磁盤臨時表

  因為內存儲引擎不支持TEXT和BLOB數據類型, 使用到BLOB和TEXT列的查詢和使用隱式臨時表的查詢將不得不使用MyISAM的磁盤臨時表, 即使只有很少的幾條記錄。 這可能導致很嚴重的性能開銷。即使把MySQL配置成在RAM盤上使用臨時表, 也會用到一些開銷大的系統調用(Maria存儲引擎應該能通過把所有的東西, 而不只是索引,緩存在內存中而在一定程度上緩解這個問題)。最好的解決辦法是避免使用BLOB和TEXT類型, 除非費用不可。

  .

  如果無法避免使用BLOB和TEXT類型, 應該能夠通過使用ORDER BY SUBSTRING(column, length)

  的辦法來把這些類型的值轉化成字符串,這樣不會妨礙使用內存臨時表。另外, 確認一下的所使用的子串的長度是否短到不會導致臨時表的大小不會超過 max_heap_table_size 或 tmp_table_size, 否則,還是會生成MyISAM的磁盤臨時表。

  如果EXPLAIN結果中的”Extra”列裡面包含”Using temporary”, 那麼查詢會使用一個隱式的臨時表。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved