資料型別優化

2021-08-01 23:06:05 字數 1223 閱讀 2490

tinyint, smallint, mediumint, int, bigint

- 分別使用8,16,32,64,128位儲存空間,儲存的值範圍:

-2^ - 2^-1
float, double, decimal

- doule和float使用標準的浮點運算進行近似計算,decimal用於儲存精確的小數

- float佔4個位元組,doule佔8個位元組。decimal可以指定小數點前後所允許的最大位數,會影響空間消耗,每4個位元組存9個數字,小數點本身佔乙個位元組,最多允許65個數字。

- decimal只是一種儲存格式,在計算中會轉換為double型別。

- 因為額外的空間和計算開銷,盡量只在對小數進行精確計算時才使用decimal,最好使用bigint代替decimal

varchar, char, blob, text

varchar和char

使用varchar(5)和varchar(200)儲存乙個5位元組的字串的空間開銷是一樣的,但是更長的列會消耗更多的記憶體,mysql通常會分配固定的記憶體塊內部值。在使用記憶體臨時表或磁碟臨時表進行排序時會消耗過多的不必要的空間。

char

與char和varchar類似的型別還有binary和varbinary,它們存數的是二進位制字串。儲存的是位元組碼而不是字元,使用\0而不是空格進行填充。

blob和text

因為memory引擎不支援blob和text,所以,如果查詢使用了這兩種型別列並且需要使用隱式臨時表,將不得不使用myisam磁碟臨時表,會導致嚴重的效能開銷。盡量避免使用這兩種型別,如果實在無法避免,在用到時,使用substring(column,length)將列值轉換為字串(要足夠短,不會使臨時表的大小超過max_heap_table_size或tmp_table_size,超過以後會轉為磁碟臨時表),就中以使用記憶體臨時表了。

列舉

日期和時間型別

mysql能儲存的最小時間粒度為秒,但是mysql可以使用微秒級的粒度進行臨時運算。

datetime

timestamp資料庫三正規化

正規化的優點和缺點

反正規化的優點和缺點

如果不需要關聯表,對大部分最差的查詢情況,如全表掃瞄,當資料比記憶體大時比關聯要快得多,因為這樣避免了隨機i/o,全表掃瞄基本上是順序i/o

MySQL資料型別優化

mysql資料型別眾多,選擇正確的資料型別對於獲得高效能至關重要。遵從以下幾條原則有助力做出更好的選擇。1 更小的資料型別。更小的資料型別通常更快,因為它們占用更少的磁碟 記憶體和cpu快取,並且處理時需要的cpu週期也更少。但也要確保自己沒有低估需要的儲存範圍。2 簡單的資料型別。簡單的資料型別通...

MYSQL資料型別優化

mysql支援的資料型別很多,選擇正確的資料型別對於獲得高效能至關重要,不管儲存哪種資料型別,下面幾個簡單原則都有助於我們做出更好的選擇。1 更小的通常更好,更小的資料型別通常更快,因為它們占用更少的磁碟,記憶體和cpu快取,並且處理時需要的cpu週期也更少。但是要確保不會低估要儲存值的範圍 2 簡...

mysql 資料型別優化

1 更小的通常更好 更小的資料型別,更快速,因為占用更小的磁碟,cpu,快取 只要保證你的資料最大值不超過你的資料型別範圍即可 2 簡單就好 簡單的資料型別操作需要更少的cpu週期,整型比字元操作代價更低 例如時間型別用date,datetime等,不用字串 還有ip位址用整型等 3 盡量避免nul...