4 Schema與資料型別優化

2021-10-11 11:18:45 字數 1490 閱讀 3360

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...