Documentation Home
MySQL 8.0 参考手册  / 第8章优化  / 8.4 优化数据库结构  / 8.4.2 优化MySQL数据类型  /  8.4.2.2 优化字符和字符串类型

8.4.2.2 优化字符和字符串类型

对于字符和字符串列,请遵循以下准则:

  • 当您不需要特定于语言的归类功能时,使用二进制归类顺序进行快速比较和排序操作。您可以使用 BINARY运算符在特定查询中使用二进制排序规则。

  • 比较不同列的值时,尽可能使用相同的字符集和排序规则声明这些列,以避免在运行查询时进行字符串转换。

  • 对于大小小于 8KB 的列值,请使用二进制 VARCHAR而不是 BLOB. GROUP BY and子句可以生成临时表,如果原始表不包含任何 列 ,ORDER BY这些临时表可以使用 存储引擎。MEMORYBLOB

  • 如果一个表包含名称和地址等字符串列,但许多查询不检索这些列,请考虑将字符串列拆分到一个单独的表中,并在必要时使用带有外键的连接查询。当 MySQL 从一行中检索任何值时,它会读取一个包含该行(可能还有其他相邻行)所有列的数据块。保持每一行很小,只有最常用的列,允许更多行适合每个数据块。这种紧凑的表减少了常见查询的磁盘 I/O 和内存使用。

  • 当您使用随机生成的值作为InnoDB表中的主键时,如果可能,请在其前面加上一个升序值,例如当前日期和时间。当连续的主值在物理上彼此靠近存储时,InnoDB可以更快地插入和检索它们。

  • 请参阅第 8.4.2.1 节,“针对数字数据进行优化”,了解为什么数字列通常优于等效字符串列的原因。