发布网友 发布时间:2022-04-22 00:02
共1个回答
热心网友 时间:2022-04-07 18:54
1.选择数据类型的基本原则 前提: 使用适合存储引擎。 MyISAM数据表,最好使用固定长度的数据列代替可变长度的数据列。 2). MEMORY存储引擎和数据列 MEMORY数据表目前都使用固定长度的数据行存储,因此无论使用CHAR或VARCHAR列都没有关系。两者都是作为CHAR类型处理的。 3). InnoDB 存储引擎和数据列 建议使用 VARCHAR类型,对于InnoDB数据表,内部的行存储格式没有区分固定长度和可变长度列(所有数据行都使用指向数据列值的头指针),因此在本质上,使用固定长度的 CHAR列不一定比使用可变长度VARCHAR列简单。因而,主要的性能因素是数据行使用的存储总量。由于CHAR平均占用的空间多于VARCHAR,因 此使用VARCHAR来最小化需要处理的数据行的存储总量和磁盘I/O是比较好的。 2. 固定长度数据列与可变长度的数据列1).char与varchar l CHAR和VARCHAR类型类似,但它们保存和检索的方式不同。它们的最大长度和是否尾部空格被保留等方面也不同。在存储或检索过程中不进行大小写转换。下面的表显示了将各种字符串值保存到CHAR(4)和VARCHAR(4)列后的结果,说明了CHAR和VARCHAR之间的差别:值CHAR(4)存储需求VARCHAR(4)存储需求''' '4个字节''1个字节'ab''ab '4个字节'ab '3个字节'abcd''abcd'4个字节'abcd'5个字节'abcdefgh''abcd'4个字节'abcd'5个字节 请注意上表中最后一行的值只适用不使用严格模式时;如果MySQL运行在严格模式,超过列长度不的值不保存,并且会出现错误。从CHAR(4)和VARCHAR(4)列检索的值并不总是相同,因为检索时从CHAR列删除了尾部的空格。通过下面的例子说明该差别: mysql> CREATE TABLE vc (v VARCHAR(4), c CHAR(4)); Query OK, 0 rows affected (0.02 sec) mysql>