8.4.2.3 优化 BLOB 类型

  • 当存储包含文本数据的大 blob 时,请考虑首先对其进行压缩。当整个 table 由InnoDBMyISAM压缩时,请勿使用此技术。

  • 对于具有多个列的 table,为了减少不使用 BLOB 列的查询的内存需求,请考虑将 BLOB 列拆分为一个单独的 table,并在需要时使用联接查询对其进行引用。

  • 由于检索和显示 BLOB 值的性能要求可能与其他数据类型完全不同,因此可以将特定于 BLOB 的 table 放在不同的存储设备上,甚至放在单独的数据库实例上。例如,要检索 BLOB,可能需要读取较大的 Sequences 磁盘,这比SSD device更适合传统硬盘驱动器。

  • 请参阅第 8.4.2.2 节“针对字符和字符串类型进行优化”,以获取为什么有时使用VARCHAR二进制列优于等效的 BLOB 列的原因。

  • 您可以将列值的哈希存储在单独的列中,对该列进行索引并在查询中测试该哈希值,而不是针对非常长的文本字符串测试是否相等。 (使用MD5()CRC32()函数生成哈希值.)由于哈希函数可以为不同的 Importing 生成重复的结果,因此您仍然在查询中包含子句AND blob_column = long_string_value,以防止错误匹配。性能优势来自较小,易于扫描的哈希值索引。