MySQL 8.4 发行说明
对于字符和字符串列,请遵循以下指南
当您不需要特定于语言的排序规则功能时,使用二进制排序规则顺序进行快速比较和排序操作。您可以使用
BINARY
运算符在特定查询中使用二进制排序规则。在比较来自不同列的值时,尽可能使用相同的字符集和排序规则声明这些列,以避免在运行查询时进行字符串转换。
对于大小小于 8KB 的列值,请使用二进制
VARCHAR
而不是BLOB
。GROUP BY
和ORDER BY
子句可以生成临时表,如果原始表不包含任何BLOB
列,则这些临时表可以使用MEMORY
存储引擎。如果表包含字符串列,例如姓名和地址,但许多查询不检索这些列,请考虑将字符串列拆分为单独的表,并在需要时使用外键进行联接查询。当 MySQL 从行中检索任何值时,它会读取包含该行所有列(以及可能的其他相邻行)的数据块。保持每个行很小,只包含最常用的列,可以使每个数据块中容纳更多行。这样的紧凑表可以减少常见查询的磁盘 I/O 和内存使用量。
当您在
InnoDB
表中使用随机生成的值作为主键时,如果可能,请在其前面加上一个递增的值,例如当前日期和时间。当连续的主键值在物理上存储在彼此附近时,InnoDB
可以更快地插入和检索它们。请参阅 第 10.4.2.1 节,“优化数值数据”,了解为什么数值列通常优于等效的字符串列的原因。