建表三大原則:
定長和變長分離
常用字段和不常用字段分離
使用冗餘欄位或冗餘表
1、定長與變長分離
如 id int,佔4個位元組,char(4)佔4個字元長度,也是定長,time
即每乙個單元值佔的位元組是固定的。在磁碟上查詢時,由於每一行長度固定,比如長度為10000,查下一條時只需查+10001位置的資料。
而varchar,text,blog等變長字段,適合單放一張表,用主鍵和核心表關聯起來。
2、常用字段和不常用字段分離
需要結合具體業務分析,分析欄位的查詢場景,查詢場景頻度低的字段,單拆出來。
3、在1對多,需要關聯統計的字段上,新增冗餘字段
這一條與一般的設計理念衝突。但是在某些業務場景下,很好使用。
比如,有兩張表,表1使用者表,表2使用者-訂單表,在查詢表1使用者時,同時需要知道使用者下訂單數量的總數,為了獲取這個總數需要在表2上count一下。這種情況可以在表1增加乙個使用者訂單總數的冗餘字段,每往表2插入乙個使用者訂單時,表1的使用者訂單總數冗餘欄位加1。這樣查詢使用者下訂單總數時,可以直接用該冗餘字段,不需要額外查表2.
新增冗餘字段,是一種「犧牲空間來換取時間」的方法。
在計算機的優化中,說來說去其實就兩個優化:1、犧牲時間換空間;2、犧牲空間換時間。
多年前,記憶體寶貴時,空間小,程式設計師不得不乙個位元組乙個位元組扣,盡量少使用記憶體;如今硬體是白菜價,更傾向於用空間來換時間,東西都往記憶體裡扔,換來時間響應的提公升。
mysql 建表原則 MySql基本的建表原則
1.定長和變長的分離 如int,char,time所佔位元組是固定的字段放在一張表 如varchar,text所佔位元組不確定的字段放在一張表中 2.常用字段和不常用字段進行分離,根據查詢頻率來設計 3.一對多的關聯表可以新增冗餘字段,如商品分類表 和商品表 在首頁中需要顯示每個分類商品總數.解決方...
Mysql優化之建表原則
1.定長與變長分離 如 id int佔4個位元組,char 4 佔4個字元長度,也是定長,time即每一單元值佔的位元組是固定的 核心且常用字段,直建成定長,方在一張表上 而 varchar,text,blob這種變長字段,適合單方一章表,用主鍵與核心表關聯起來 2.常用字段要與非常用字段分離 需要...
mysql建表思路 MySQL 建表思路
思想 硬碟如倉庫,表如倉庫中貨架 常用與不常用等分類 欄位如貨物 尺寸是固定或變動 訪問貨物涉及到貨架的佔位 效率。資料型別選用,建表思路,正規化 資料型別特點 資料型別的速度關係 最快 整形 date,time char,enum varchar text blob 最慢 char 與 varch...