资料类型 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
结论
一切的资料类型都只能看自己应用的需求去决定,如果没办法还是要用比较複杂的资料类型,那还是必须要用,资料的完整性比任何的东西都重要多了,效率就想办法用增加机器
或者是优化资料表结构
…等等的其他方式去达成,不要为了效率增加而强迫使用特定的资料类型,这样反而是因噎废食。