MySQL 9.0 发行说明
当存储包含文本数据的较大的 blob 时,请考虑先对其进行压缩。如果整个表由
InnoDB
或MyISAM
压缩,请不要使用此技术。对于具有多个列的表,为了减少不使用 BLOB 列的查询的内存需求,请考虑将 BLOB 列拆分为单独的表,并在需要时使用联接查询进行引用。
由于检索和显示 BLOB 值的性能需求可能与其他数据类型有很大不同,因此您可以将 BLOB 特定的表放在不同的存储设备上,甚至放在单独的数据库实例上。例如,检索 BLOB 可能需要大量的顺序磁盘读取,这更适合传统的硬盘驱动器,而不是 SSD 设备。
有关为什么二进制
VARCHAR
列有时优于等效的 BLOB 列的原因,请参见 第 10.4.2.2 节,“优化字符和字符串类型”。与其测试与非常长的文本字符串的相等性,您可以将列值的哈希值存储在单独的列中,对该列进行索引,并在查询中测试哈希值。(使用
MD5()
或CRC32()
函数生成哈希值。)由于哈希函数可能会对不同的输入产生重复的结果,因此您仍然需要在查询中包含一个AND
子句以防止出现误匹配;性能优势来自更小、易于扫描的哈希值的索引。blob_column
=long_string_value