Oracle BLOB与VARCHAR的区别

8

我需要将一个(大型)SQL查询存储在表的一列中,我想使用一个BLOB字段。明确一下,我想要存储查询,而不是它的结果。

最好使用什么: BLOB还是VARCHAR?或者可能还有其他东西?

4个回答

13

另一个选择是使用 CLOB。对于文本数据来说,使用 CLOB 比使用 BLOB 更合理。即使您不必在数据库内分析数据,使用 CLOB 仍然有意义,因为查看数据更容易。

某些功能仅适用于 VARCHAR。例如,您只能在 VARCHAR 列上创建索引(我这里不是在谈论全文索引,我知道您可以在 CLOB 列上创建全文索引)。您无法有 CLOB 或 BLOB 主键(我猜您不需要那个,只是作为一个例子)。

大多数 VARCHAR 操作比 CLOB/BLOB 操作要快得多。即使是读取数据,如果使用 VARCHAR,速度也会更快(除非列中的文本非常多)。VARCHAR 需要更少的内存开销,但它们通常会在内存中完全读取,所以最终 VARCHAR 可能仍然会使用更多内存。


这是最好的答案,因为它解释了varchar和clob列之间的特性和性能差异。 - Anomaly

12
如果要存储无法适应 VarChar2 的文本数据,我认为您应该使用 CLOB
引用自OraFaq:“CLOB(Character Large Object)是一种Oracle数据类型,可容纳高达4 GB的数据。 CLOB非常方便用于存储文本。”

是的,我认为我的文本无法适应VARCHAR。感谢您的解释。 - CC.

10

短字符串 → VARCHAR

长字符串 → CLOB

二进制数据 → BLOB


2

这两者是不同的。

使用BLOB存储二进制数据,例如图像、音频和其他多媒体数据。

而使用VARCHAR存储文本,大小限制为最大值。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接