Choosing Optimal Data Types
选择正确的数据类型
  Mysql 提供多种数据类型的支持,选择正确的数据类型对能否得到高性能的设计影响很大。 以下一些简单的指导规则能帮助您对各种数据类型的设计决策做出更好的选择:
小的比大的好
  一般来说, 在保证正确性的前提下, 尽量使用最小的数据类型来存储和表示数据。 小的数据类型一般比大的更快, 因为小的数据类型占用的磁盘空间, 内存和cup缓存都相对小, 需要的cpu处理也要相对少; 这个原则很重要。
简单的就是好的
  简单的数据类型需要的cup处理周期更少, 比如, 对整数的处理比字符串处理更容易, 因为字符集和排序规则使得字符串比较复杂化了, 两个典型例子是: 使用mysql的内嵌数据类型来存储日期和时间而不是字符串, 使用整数存储Ip地址而不是字符串。
尽量避免NULL数据类型
  如果可能, 尽可能把字段定义成NOT NULL。 许多表包含一些字段允许空的字段, 即使应用需求不需要存储null的数据, 这样做的原因知识因为允许字段为NULL是缺省的。您应该注意把字段设计生非NULL的, 除非真的是需要存储NULL值。 在查询优化时, mysql很难优化需要引用到能包含NULL值的字段的查询, 因为允许为null的字段使得索引, 索引统计和值比较更复杂。
  允许NULL的字段会占用掉更多的存储空间和花掉更多的cpu处理, 当为一个可为空的字段建立索引时, 需要为每项分配一个额外的字节, 在myisam中, 甚至会使得一个固定大小的索引(比如建立在单个整数的缩影)变成一个变长大小的索引。 即使遇到不需要存储值到某个字段, 也应当考虑不使用NULL, 而是考虑使用0, 一个特殊值或者空串来代替。 把字段从NULL改成NOT NULL的性能改善通常不是很大, 所以, 除非确实证明NULL字段在引起性能问题, 一般不需要把超找并修改NULL字段为NOT NULL字段当做一件大事来对待; 但是, 在做设计的时候, 注意尽量把需要索引的字段设计成不允许为空的。