一.選擇優化的資料型別
更小的通常更好:在允許的情況下,應該盡量使用可以正確儲存資料的最小資料型別,因為占用更少的磁碟,記憶體和cpu快取,處理周期短, 例如只要儲存0~200,tinyint unsigned 更好
簡單就好:例如整型比字元型操作代價更低,因為字符集和校對規則(排序規則)使字串比較比整型比較更複雜.該使用mysql的內建型別(date,time,datetime)時,不要使用字串儲存
盡量避免使用null:通常情況下,最好指定列為 not null,除非真的需要儲存null值,因為null的列使得索引,索引統計和值比較都更為複雜;可為null的列會使用更多的儲存空間.調優時,將可為null的列改為not null,帶來的效能提公升比較小,但是如果計畫在列上建索引,就應該盡量避免設計成可為null的列
注:innodb使用單獨的位bit儲存null值,對於稀疏資料(很多值為null,只有少數列非null)有很好的空間效率,但不適用與myiasm
二.選擇具體的資料型別
1.整數型別 整數型別可選擇** unsigned **屬性,表示不允許負值,大致可以使整數的上限提高一倍.例如: tinyint 儲存範圍 -128 ~ 127;而 tinyint unsigned 的範圍為:0~255
tinyint: 8位儲存空間,儲存的範圍從-2(8-1) 到2(8-1)
smallint: 16位儲存空間,儲存的範圍從-2(16-1) 到2(16-1)
mediumint: 24位儲存空間,儲存的範圍從-2(24-1) 到2(24-1)
int: 32位儲存空間,儲存的範圍從-2(32-1) 到2(32-1)
bigint: 64位儲存空間,儲存的範圍從-2(64-1) 到2(64-1)
注:上述選擇決定mysql怎麼在記憶體和磁碟中儲存資料,然而整數計算一般使用64位的bigint整數,即使32位環境也是
2.實數型別
六 資料型別選擇(MySQL讀書筆記)
1 char varchar char varchar 固定長度字串 不足空格補位 可變長度字串 處理速度比 varchar 快得多 浪費空間 1.1 不同儲存引擎對兩者使用原則有所不同 myisam 建議使用固定長度的資料列 memory 都可以 均作為 char 處理 innodb 建議使用 v...
golang 讀書筆記 資料型別
slice 切片 代表變長的序列,序列中每個元素都有相同的型別。乙個slice型別一般寫作t,其中t代表slice中元素的型別 slice的語法和陣列很像,只是沒有固定長度而已。乙個slice由三個部分構成 指標 長度和容量。指標指向第乙個slice元素對應的底層陣列元素的位址,要注意的是slice...
python讀書筆記 基本資料型別
python 中的變數不需要宣告。每個變數在使用前都必須賦值,變數賦值以後該變數才會被建立。在 python 中,變數就是變數,它沒有型別,我們所說的 型別 是變數所指的記憶體中物件的型別。python允許同時為多個變數賦值,也可以為多個物件指定多個變數。python3 中有六個標準的資料型別 nu...