我需要将一个(大型)SQL查询存储在表的一列中,我想使用一个BLOB
字段。明确一下,我想要存储查询,而不是它的结果。
最好使用什么: BLOB
还是VARCHAR
?或者可能还有其他东西?
另一个选择是使用 CLOB。对于文本数据来说,使用 CLOB 比使用 BLOB 更合理。即使您不必在数据库内分析数据,使用 CLOB 仍然有意义,因为查看数据更容易。
某些功能仅适用于 VARCHAR。例如,您只能在 VARCHAR 列上创建索引(我这里不是在谈论全文索引,我知道您可以在 CLOB 列上创建全文索引)。您无法有 CLOB 或 BLOB 主键(我猜您不需要那个,只是作为一个例子)。
大多数 VARCHAR 操作比 CLOB/BLOB 操作要快得多。即使是读取数据,如果使用 VARCHAR,速度也会更快(除非列中的文本非常多)。VARCHAR 需要更少的内存开销,但它们通常会在内存中完全读取,所以最终 VARCHAR 可能仍然会使用更多内存。
VarChar2
的文本数据,我认为您应该使用 CLOB
。短字符串 → VARCHAR
长字符串 → CLOB
二进制数据 → BLOB
这两者是不同的。
使用BLOB
存储二进制数据,例如图像、音频和其他多媒体数据。
而使用VARCHAR
存储文本,大小限制为最大值。