全部博文(43)
分类: Mysql/postgreSQL
2011-05-14 19:07:40
Smaller is usually better
选择能保证应用正确的最小数据类型。
不要过分的低估所要存储的数据的长度,因为在应用运行之后在表的多个地方增加数据类型的长度(data type range)是非常痛苦的事情。
Simple is good
尽可能选择简单的数据类型,这样更节省CPU。
如整数(interger)就比字符(character)要简单。
两个简单的例子:存储日期时,使用MySQL内置的DATETIME类型比用字符串类型要好;用整形存储IP信息比用字符串好。
Aviod NULL if possible
尽可能避免在数据库中存放NULL。
尽可能在对所有字段都做NOT NULL约束,除非是真的打算存储NULL。
对MySQL来说,很难优化可以为NULL的列——构造索引、索引统计和数据比较的时候更加复杂——存储的时候需要额外的空间并需要MySQL对其做特殊的处理。例如,在MyISAM引擎的表中,对可以为NULL的列加索引,每一项都需要额外的存储空间,并且使得索引变成变长索引——定长索引用整形存储,效率更高。
如果实在需要有NULL的存在,也可以考虑用“0”戒者空字符串来代替。
MySQL首先把数据分成了若干大类,如时间类型、数值类型和字符类型等。然后又在这些大类中细分了若干子类,如时间类型又分类DATETIME和TIMESTAMP。
列数据类型的选择步骤是,首先确定使用哪一种大类,然后再选择合适的子类。