表的優化與列型別選擇

2022-05-08 04:00:08 字數 1768 閱讀 8024

如 id int, 佔

4個位元組

, char(4) 佔4

個字元長度

,也是定長

, time

即每一單元值佔的位元組是固定的.

核心且常用字段,宜建成定長

,放在一張表

.而varchar, text,blob,這種變長字段

,適合單放一張表

, 用主鍵與核心表關聯起來

.需要結合**具體的業務來分析,分析欄位的查詢場景

,查詢頻度低的字段

,單拆出來

.典型的」空間換時間」

列的特點分析:

整型: 定長

,沒有國家

/地區之分

,沒有字符集的差異

time定長

,運算快

,節省空間

. 考慮時區,寫

sql時不方便

where > 『2005-10-12』;

enum: 能起來約束值的目的

, 內部用整型來儲存,但與

char

聯查時,

內部要經歷串與值的轉化

char 定長

, 考慮字符集和(排序

)校對集

varchar, 不定長 要考慮字符集的轉換與排序時的校對集

,速度慢

.text/blob 無法使用記憶體臨時表

原因: 大的字段浪費記憶體

,影響速度

,以年齡為例 tinyint unsigned not null ,可以儲存

255歲,足夠

. 用int浪費了

3個位元組

以varchar(10) ,varchar(300)儲存的內容相同

, 但在表聯查時

,varchar(300)

要花更多記憶體

原因: null不利於索引

,要用特殊的位元組來標註

.在磁碟上佔據的空間其實更大.

1: enum列在內部是用整型來儲存的

2: enum列與

enum

列相關聯速度最快

3: enum列比

(var)char

的弱勢---

在碰到與

char

關聯時,

要轉化.

要花時間

.優勢在於,當

char

非常長時

,enum

依然是整型固定長度

.

當查詢的資料量越大時,enum的優勢越明顯

.

enum與

char/varchar

關聯 ,

因為要轉化

,速度要比

enum->enum,char->char

要慢,

但有時也這樣用-----就是在資料量特別大時

,可以節省

io.

原因----無論

enum(『manmaman』,』womanwomanwoman』) 列舉的字元多長

,內部都是用整型表示

, 在記憶體中產生的資料大小不變,而

char型,

卻在記憶體中產生的資料越來越多

.總結: enum 和

enum

型別關聯速度比較快,enum 型別節省了

io

mysql優化 表的優化與列型別的選擇

定長與變長分離 常用字段和不常用字段分離 合理增加冗餘字段 字段型別優先順序 整型 date,time enum,char varchar blob 列的特點分析 整型 定長,沒有國家 地區之分,沒有字符集的差異 time 定長,運算快,節省空間.考慮時區 enum 能起來約束值的目的,內部用整型來...

表的優化和列型別的選擇

如id int 佔四個位元組 char 4 佔四個字元長度,也是定長 time即每乙個單元值佔的位元組是固定的 核心且常用字段,宜建成定長,放在一張表,而varchar text bolb這種邊長的字段,適合單方一張表,用主鍵與核心表關聯起來。需要結合 具體業務來分析,分析欄位的查詢場景,查詢頻度低...

MySQL優化筆記02 列型別的選擇

字段型別優先順序排序 整型 date,time enum,char varchar blob 列的特點分析 整型 定長,沒有國家 地區之分,沒有字符集的差異 time 定長,運算快,節省空間.考慮時區,寫sql時不方便 where 2005 10 12 enum 能起來約束值的目的,內部用整型來儲存...