在这种情况下 CLOB 与 Varchar2 的性能?

use*_*603 5 oracle varchar

从java应用程序中,我需要存储可以超过4000个字符的字符串。我只需要存储它。然后具有数据库访问权限的人可以查询和查看它。不会从 Java 应用程序访问该列。此外,我没有任何要求将其编入索引。

我的理解是,当我们需要访问 CLOB 数据类型或需要对其进行索引时,varchar2 的性能比 CLOB 更好。那是对的吗 ?

我的问题 - 当我们只需要存储它并在 sql developer throigh 查询中访问它时,对性能有什么影响吗?

Bal*_*app 6

Pre-12c:varchar2限制为 4000 字节。如果您需要在字段中存储更多数据,请选择CLOB.

从 12c 开始:varchar2在启用Extended datatypes后限制为 4000 字节或 32767 字节。如果您需要在字段中存储更多数据,请选择CLOB. 对于扩展数据类型,varchar2在内部存储为 LOB,其中“短”字段转到表段,而“长”字段转到 LOB 段。

这两种类型都可以建立索引 (Oracle Text)。

LOB 设计为一次写入,然后将其视为只读数据。对现有 LOB 数据的 DML 操作通常比在varchar2.

LOB 支持重复数据删除(需要高级压缩选项)。

根据用例,varchar2可以表现更好或相同。

但是根据你上面写的(只读数据,不访问或搜索列),CLOB应该没问题,你不需要摆弄扩展数据类型或关心varchar2.