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