尽量避免NULL
很多表都包含可为NULL (空值)的列,即使应用程序并不需要保存NULL也是如此,这是因为可为NULL是列的默认属性"3。...如果查询中包含可为NULL的列,对MySQL来说更难优化,因为可为NULL的列使得索引、索引统计和值比较都更复杂。可为NULL的列会使用更多的存储空间,在MySQL里也需要特殊处理。...通常把可为NULL的列改为NOT NULL带来的性能提升比较小,所以(调优时)没有必要首先在现有schema中查找并修改掉这种情况,除非确定这会导致问题。...例如, DATETIME和TIMESAMP列都可以存储相同类型的数据:时间和日期,精确到秒。
然而TIMESTAMP只使用DATETIME一半的存储空间,并且会根据时区变化,具有特殊的自动更新能力。...另一方面, TIMESTAMP允许的时间范围要小得多,有时候它的特殊能力会成为障碍。
MySQL为了兼容性支持很多别名,例如INTEGER, BOOL,以及NUMERIC,它们都只是别名。