mysql_數據庫設計類型選擇及優化

數據庫設計原則:
mysql

a,更小的一般更好。c++

    應該儘可能使用能夠正確存儲數據的最小數據類型。如只要存儲0-200,tinyint unsigned更好sql

b,簡單就好數據庫

    簡單的數據類型的操做須要更少的cpu週期。同時後期優化也更爲容易。數據庫設計

c,儘可能避免使用null工具

   mysql在創建索引,優化過程對null須要作特殊處理,耗費額外資源。非特殊狀況,避免使用null。優化

數據類型常識
spa

一,整數類型設計

   根據存儲空間:
blog


TINYINT SMALLINT MEDIUMINT INT BIGINT
存儲空間位數n 8 16 24 32 64
存儲範圍 -128~127



根據屬性

unsigned:-2(N-1)-2(N-1)-1  --沒辦法輸入右上標

signed:0~2(N-1)

指定寬度

INT(11),這對大多數應用沒有實際意義,他不會限制值的合法範圍,只是規定了一些交互工具用來顯示字符的個數,對存儲和計算來講,INT(11)和INT(20)是相同的

二:實數類型

   float,double,decimal

 float和double使用標準浮點近似運算.

  decimal使用精確運算.須要額外開銷,

decimal(18,9),存儲18位數,小數點左右各9位。

三,字符串類型


長度 額外記錄長度 長度不足 長度超出
尾部空格


varchar(n) 變長 須要 以實際長度存儲 截斷
保留


char(n) 定長 不須要 尾部用空格填充 截斷

刪除



varchar:字符串最大長度比平均長度大不少,列更新不多,碎片不是問題

char:char會根據須要對存儲數據尾部空格刪除,若是長度不足,採用空格對尾部填充,

          適合存儲很短,或者全部值都接近同一個長度

四,日期和時間類型

datetime,timestamp

datetime:它把日期和時間封裝成YYYYMMDDHHMMSS的整數中,可排序,無奇異,可表示範圍到9999年

timestamp,保存從1970-01-01午夜以來的秒數,具有自動刷新功能,和時區綁定,效率更高,可表示範圍到2038年。

五,大文本類型

 blog,text,這種數據我一直認爲應該以文本形式存儲在系統文件中比較好

六,ENUM

   有限類型字符串,用枚舉的方式代替,效率更高。



數據類型不外乎是mysql用來存儲數據的格式規範,mysql由c++開發,其實本身用c++定義一套數據庫亦可,只是mysql更成熟穩定罷了。

相關文章
相關標籤/搜索