表的優化:
1: 定長與變長分離
如 id int, 佔4個字節, char(4) 佔4個字符長度,也是定長, time
即每一單元值佔的字節是固定的.
核心且常用字段,宜建成定長,放在一張表.
而varchar, text,blob,這種變長字段,適合單放一張表, 用主鍵與核心表關聯起來.
2:常用字段和不常用字段要分離.
需要結合網站具體的業務來分析,分析字段的查詢場景,查詢頻度低的字段,單拆出來.
3:合理添加冗餘字段.
看如下BBS的效果
每個版塊裏,有N條帖子, 在首頁,顯示了版塊信息,和版塊下的帖子數.
這是如何做的?
boardid |
boardname |
postnum |
8 |
開班信息 |
2 |
9 |
每日視頻及代碼 |
1 |
postid |
boardid |
title |
123 |
8 |
論壇開張了 |
129 |
8 |
灌水 |
133 |
9 |
來一帖 |
如果board表只有前2列,則需要取出版塊後,
再查post表,select count(*) from post group by board_id,得出每個版塊下的帖子數.
如果有postnum字段,每發一個帖子時,對postnum字段+1;
再查詢版塊下的帖子數時, 只需要1條語句直接查boardid
select boradid, boardname,postnum from board;
典型的”空間換時間”