Documentation Home
MySQL 8.3 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 40.8Mb
PDF (A4) - 40.9Mb
Man Pages (TGZ) - 294.0Kb
Man Pages (Zip) - 409.0Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb
Excerpts from this Manual

10.4.2.3 对 BLOB 类型的优化

  • 当存储包含文本数据的大型 blob 时,考虑首先对其进行压缩。不应在整个表被 InnoDBMyISAM 压缩时使用这种技术。

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

  • 由于检索和显示 BLOB 值的性能要求可能与其他数据类型非常不同,因此可以将 BLOB 特定的表放在不同的存储设备或甚至是单独的数据库实例上。例如,检索 BLOB 可能需要大型顺序磁盘读取,这对传统硬盘更友好,而不是 SSD 设备

  • 请参阅 第 10.4.2.2 节,“对字符和字符串类型的优化”,了解为什么二进制 VARCHAR 列有时比等效的 BLOB 列更可取。

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