#### 8.4.2.3 优化 BLOB 类型

[](<>)

-   存储包含文本数据的大型 blob 时，请考虑先对其进行压缩。当整个表被压缩时不要使用这种技术`InnoDB`要么`MyISAM`.

-   对于具有多个列的表，为了减少不使用 BLOB 列的查询的内存需求，请考虑将 BLOB 列拆分为单独的表，并在需要时使用连接查询引用它。

-   由于检索和显示 BLOB 值的性能要求可能与其他数据类型有很大不同，因此您可以将特定于 BLOB 的表放在不同的存储设备甚至单独的数据库实例上。例如，检索 BLOB 可能需要大的顺序磁盘读取，这更适合传统硬盘驱动器而不是硬盘驱动器。[SSD设备](glossary.html#glos_ssd).

-   看[第 8.4.2.2 节，“针对字符和字符串类型进行优化”](optimize-character.html)二进制文件的原因`VARCHAR`列有时比等效的 BLOB 列更可取。

-   您可以将列值的散列存储在单独的列中，索引该列，然后在查询中测试散列值，而不是针对非常长的文本字符串测试相等性。（使用`MD5()`要么`CRC32()`函数来产生哈希值。）由于哈希函数可以为不同的输入产生重复的结果，你仍然包括一个子句`和 *`blob_column`* = *`长字符串值`*`在查询中防止错误匹配；性能优势来自散列值的更小、更容易扫描的索引。
