Documentation Home
MySQL 8.3 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 40.8Mb
PDF (A4) - 40.9Mb
Man Pages (TGZ) - 294.0Kb
Man Pages (Zip) - 409.0Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb
Excerpts from this Manual

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

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

对于字符和字符串列,请遵循以下指南:

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

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

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

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

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

  • 请参阅 第 10.4.2.1 节,“对数字数据的优化”,了解为什么数字列通常比等效的字符串列更可取。