MySQL 8.4 Release Notes
10.4.2.3 优化BLOB类型
-
当存储一个包含大量文本数据的大型BLOB时,考虑先对其进行压缩。不要在整个表被
InnoDB
或MyISAM
压缩的情况下使用这个技术。 -
对于含有多个列的表格,可以通过将BLOB列分离到一个单独的表中,并在需要时用连接查询引用它,以减少不使用BLOB列的查询对内存的需求。
-
由于从其他数据类型检索和显示BLOB值的性能要求可能会大不相同,你可以将包含BLOB的表放在不同的存储设备或甚至是单独的一个数据库实例上。例如,检索一个BLOB可能需要执行一个大型的顺序磁盘读取,这在传统硬盘上更适合,而不是在 固态驱动器 上。
-
请参阅第10.4.2.2节,“优化字符和字符串类型”,了解为什么有时使用二进制
VARCHAR
列而不是等效的BLOB列是有益的。 -
而不是测试一个非常长的文本字符串是否与之相等,你可以在一个单独的列中存储该列值的哈希,然后对该列进行索引,并在查询中测试哈希值。使用
MD5()
或CRC32()
函数来生成哈希值。由于哈希函数可以为不同的输入产生相同的结果,你仍然需要在查询中包含一个子句AND
来防止误匹配;性能的好处来自于对哈希值的小型、易于扫描的索引。blob_ column
=long_string_value