MySQL 優化筆記

MySQL 數據優化。

優化數據類型

  1. 避免使用 NULL,NULL 需要特殊處理, 大多數時候應該使用 NOT NULL,或者使用一個特殊的值,如 0,-1 作爲默認值。
  2. 僅可能使用更小的字段,MySQL 從磁盤讀取數據後是存儲到內存中 的,然後使用 cpu 週期和磁盤 I/O 讀取它,這意味着越小的數據類型佔用的空間越小.

** 小心字符集轉換**
客戶端或應用程序使用的字符集可能和表本身的字符集不一樣,這需要
MySQL 在運行過程中隱含地進行轉換,此外,要確定字符集如 UTF-8是否支持多字節字符,因此它們需要更多的存儲空間。

優化 count(my col) 和 count( ) *
優化子查詢
遇到子查詢時,MySQL 查詢優化引擎並不是總是最有效的,這就是爲
什麼經常將子查詢轉換爲連接查詢的原因了,優化器已經能夠正確處理
連接查詢了,當然要注意的一點是,確保連接表 (第二個表) 的連接列
是有索引的,在第一個表上 MySQL 通常會相對於第二個表的查詢子
集進行一次全表掃描,這是嵌套循環算法的一部分。
優化 UNION
在跨多個不同的數據庫時使用 UNION 是一個有趣的優化方法,UNION 從兩個互不關聯的表中返回數據,這就意味着不會出現重複的行,同時也必須對數據進行排序,我們知道排序是非常耗費資源的,特別是對大表的排序。
UNION ALL 可以大大加快速度,如果你已經知道你的數據不會包括重複行,或者你不在乎是否會出現重複的行,在這兩種情況下使用UNION ALL 更適合。此外,還可以在應用程序邏輯中採用某些方法避免出現重複的行,這樣 UNION ALL 和 UNION 返回的結果都是一樣的,但 UNION ALL 不會進行排序。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章