資料類型 Data Type
越小越好
要使用能夠用來正確儲存資料的最小類型的資料型態,要確保不會低估要儲存的資料大小,因為當資料可以確定用比較少的資料去儲存的時候,所使用的空間
也會更少,所需要的索引空間
也會越少,取得資料所需要的計算時間
也會越短。
在可以用
CHAR(20)
去儲存資料時,就不要用CHAR(200)
在可以用
VARCHAR(20)
去儲存資料時,就不要用VARCHAR(200)
在可以用
TINYINT
去儲存資料時,就不要用INT
在可以用
TEXT
去儲存資料時,就不要用LONGTEXT
在可以用
BLOB
去儲存資料時,就不要用LONGBLOB
越簡單越好
整數(INT)> 固定字串(CHAR)> 變動字串(VARCHAR)> 文字(TEXT)
越簡單的資料類型,資料庫所需要用來建立索引的效率越好,因為資料類型越複雜代表資料的排列組合越多,所以需要更大的索引及計算去取得資料
在可以用整數(INT)去儲存資料時,就不要用固定字串(CHAR)
在可以用固定字串(CHAR)去儲存資料時,就不要用變動字串(VARCHAR)
在可以用變動字串(VARCHAR)去儲存資料時,就不要用文字(TEXT)
盡量不使用NULL
若非必要儲存NULL的資料,否則要盡可能的把資料欄位設定為NOT NULL,資料庫很難最佳化有NULL資料欄位的查詢,可以NULL的資料欄位需要更多的儲存空間,資料庫還需要對其進行特殊處理,而當有NULL資料欄位使用索引(INDEX)
的時候,每一條的索引紀錄必需要額外紀錄資料,導致查詢時索引的效率降低。
若真的要儲存NULL,在不影響原有的資料
的情況下,可以考慮用0
、特殊值
…等等之類的值去代替,可以用來區別是否為NULL
結論
一切的資料類型都只能看自己應用的需求去決定,如果沒辦法還是要用比較複雜的資料類型,那還是必須要用,資料的完整性比任何的東西都重要多了,效率就想辦法用增加機器
或者是優化資料表結構
…等等的其他方式去達成,不要為了效率增加而強迫使用特定的資料類型,這樣反而是因噎廢食。