尽量避免NULL
很多表都包含可为NULL (空值)的列,即使应用程序并不需要保存NULL也是如此,这是因为可为NULL是列的默认属性"3。...通常情况下最好指定列为NOT NULL,除非真的需要存储NULL值。
如果查询中包含可为NULL的列,对MySQL来说更难优化,因为可为NULL的列使得索引、索引统计和值比较都更复杂。...但这一点不适用于MyISAM。
在为列选择数据类型时,第一步需要确定合适的大类型:数字、字符串、时间等。下一步是选择具体类型。...例如, DATETIME和TIMESAMP列都可以存储相同类型的数据:时间和日期,精确到秒。
然而TIMESTAMP只使用DATETIME一半的存储空间,并且会根据时区变化,具有特殊的自动更新能力。...如果建表时采用数据类型的别名,然后用SHOW CREATE TABLE检查,会发现MySQL报告的是基本类型,而不是别名。