Documentation Home
MySQL 8.4 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 39.8Mb
PDF (A4) - 39.9Mb
Man Pages (TGZ) - 257.9Kb
Man Pages (Zip) - 364.9Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 8.4 Reference Manual  /  ...  /  Optimizing for Character and String Types

10.4.2.2 字符和字符串类型的优化

对于字符和字符串列,请遵循以下指导原则:

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

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

  • 对于大小小于8KB的列值,使用二进制VARCHAR而不是BLOBGROUP BYORDER BY子句可以生成临时表,如果原始表中没有包含BLOB列的临时表,则这些临时表可以使用MEMORY存储引擎。

  • 如果一张表包含字符串列如姓名和地址,但许多查询并不检索这些列,考虑将字符串列分离到一个单独的表中,并在必要时使用连接查询和外键。MySQL在读取任何值时会读取包含该行所有列(以及可能的其他相邻行)的数据块。保持每行小巧,只包含最频繁使用的列,可以让更多行容纳在一个数据块中。这样的紧凑表减少了常规查询所需的磁盘I/O和内存使用。

  • 如果您在InnoDB表中使用随机生成的值作为主键,并且可能的话,前缀它以升序的值,如当前日期和时间。当连续的主键值物理上存储在相邻位置时,InnoDB可以进行更快的插入和检索。

  • 请参阅第10.4.2.1节,“优化数值数据”,了解为什么一个数值列通常比等效的字符串列更受欢迎。