4.1.1 整數型別
有兩種型別的數字:整數和實數。
tinyint 8位
smallint 16位
mediumint 24位
int 32位
bigint 64位
注意: int(11) 不會限制值得合法範圍,只是規定了mysql的互動工具顯示字元個數,對於儲存和計算來說, int(1) int(20)是相同的。
4.1.2 實數型別
實數是帶有小數部分的數字。
4.1.3 字串型別
varchar:可變長字串,比定長型別更節省空間,因為它僅使用必要的空間。
char: 定長,char非常適合儲存密碼的md5值,因為是乙個定長值,不容器產生碎片,對於非常短的值,char比varchar在儲存空間上也更有效率。
例如:char(1)儲存y和n的值,只需要乙個位元組,varchar(1)需要兩個位元組。
4.1.4 日期和時間型別
timestamp 比 datetime範圍小,只能1970-2038.
除特殊情況,通常盡量使用timestamp,因為它比datetime空間效率更高。
4.1.5 位資料型別
bitset4.1.6 選擇識別符號
4.1.7 特殊型別資料
4.2 mysql schema設計中的陷阱
太多的列
太多的關聯
全能的列舉
變相的列舉
4.3 正規化和反正規化
4.3.1 正規化的優點和缺點
優點:更新比反正規化快
很少或者沒有重複資料
表通常更小
更少需要distinct或者group by
缺點需要關聯
4.3.2 反正規化的優點和缺點
優點:避免關聯
資料比記憶體大時,比關聯要快得多,因為避免了隨機 i/o.
單錶更有效的使用索引策略
缺點:更新起來比較麻煩,資料不一致。
備註:權標掃瞄基礎上是順序i/o,但不全是,跟引擎的實現有關。
4.3.3 混用正規化化和反正規化化
4.4 快取表和彙總表
4.4.1 物化檢視
flexviews
4.4.2 計數器表
4.5 加快 alter table 操作的速度
4.5.1 只修改 .frm 檔案
4.5.2 快速建立myisam索引
Schema與資料型別優化
關於資料型別選擇的一些記錄 tinyint 8 smallint 16 mediumint 24 int 32 bigint 64 可選屬性 unsigned。mysql可以為整型指定寬度,如int 11 但大多數時候沒有意義,只是規定了一些互動工具用來顯示字元的個數。從mysql4.1開始,每個字...
Schema與資料型別優化
選擇優化的資料型別 1.更小的通常更好 一般情況下,應該盡量使用可以正確儲存資料的最小資料型別。因為它們占用更少的磁碟。記憶體和cpu快取,並且處理時需要的cpu週期也更少 2.簡單就好 簡單資料型別的操作通常需要更少的cpu週期 3.盡量避免null 通常情況下最好指定列為not null。通常把...
Schema與資料型別優化
關於整數型別 1.整數型別都有可選的unsigned,表示不允許負值。2.為整數型別指定顯示寬度是沒有意義的,只會控制客戶端顯示字元的個數。關於實數型別 1.不精確型別 float,double 精確型別 decimal 2.cpu不支援對decimal進行直接運算,可以直接對浮點進行運算 同時,d...