MySQL支持很多种数据类型,不同的字段选择正确的数据类型对于获得高性能至关重要。几个选择数据类型的简单的原则如下。
1.尽量使用可以正确存储数据的最小数据类型,例如只需要存0-200,那么使用tinyint unsigned更好。原因在于更小的数据类型通常更快,占用更少的磁盘,内存以及CPU缓存,并且处理时需要的CPU周期也更少。
2.尽量选择简单的数据,因为简单数据类型的操作通常需要更少的CPU周期。例如,整型比字符操作代带价更低,因为字符集和校对规则(排序规则)使得字符比较比整形比较更复杂。如,应该用MySQL内建的类型而不是字符串来存储日期和时间。
3.尽量避免NULL值,很多表都包含可为NULL值的列,即使应用程序并不需要保存NULL也是如此,通常情况下应该避免NULL值,除非真的有必要。因为如果查询中包含可为NULL值的列比较难以优化,可为NULL值的列使得索引,索引统计和值比较都更复杂,且会占用更多的存储空间,当可为NULL值的列被索引时,每个索引记录需要一个额外的字节。
也有例外,如:InnnoDB使用单独的位存储NULL值,所以对于稀疏数据有比较好的空间效率。