对于MyISAM存储引擎,最好使用固定长度的数据列代替可变长度的数据列。这样可以使整个表静态化,从而使数据检索更快,用存储空间换查询时间。
对于InnoDB存储引擎:使用可变长的数据列,因为InnoDB数据表的存储格式不分固定长度和可变长度,因此使用CHAR不一定比使用VARCHAR更好,但由于VARCHAR是按照实际存的长度存储,比较节省空间,所以对磁盘I/O和数据存储总量比较好。
2.5 ENUM和SETENUM只能取单值,它的数据列表示一个枚举集合。它的合法值列表最多有65535个成员。因此,在需要从多个值中选取一个时,可以使用ENUM。比如:性别字段适合定义成ENUM类型,每次只能从’男’ 或 ‘女’中取一个值。
SET可取多值。它的合法取值列表最多允许有64个成员。空字符串也是一个合法的SET值。在需要取多个值的时候,适合使用SET类型,比如:要存储一个兴趣爱好,最好使用SET类型。
ENUM和SET的值是以字符串形式出现的,但在内部,MySQL以数值的形式存储它们。
2.6 BLOB和TEXTBLOB是二进制字符串,TEXT是非二进制字符串,二者均可存放大容量信息。BLOB主要存储图片、音频信息等,而TEXT只能存储纯文本文件,应分清二者存储的关系。