【发布时间】:2016-08-04 20:08:27
【问题描述】:
如果您需要存储大部分(如果不是全部)小于 4K 字节的字符串,那么在 VARCHAR2 数据类型上使用 CLOB 数据类型是否有任何负面影响?
来自here
CLOB 可以存储在单独的 LOB 段中,指向 LOB 段的指针与表的其余数据一起存储在数据块中。如果使用 CREATE TABLE 语句,您可以使用 LOB 存储子句控制 LOB 段的存储位置。默认情况下,小于约 4000 字节的 LOB 将以与 VARCHAR2 相同的方式存储,即与其余数据保持一致。
来自here:
当您创建具有 CLOB 列的表时,有一个用于 CLOB 的名为“启用行内存储”的选项。这决定了 CLOB 是存储在与表相同的段中,因此是与表行的其余部分一起存储,还是单独存储在单独的段中。在第二种情况下,表行将包含指向 CLOB 数据位置的指针。一般情况下,将CLOB与表行一起存储效率更高,但是如果CLOB超过4000个字符左右,则不能再存储在行中,而不管是否启用存储在行中,都存储在CLOB段中与否。
从这些陈述中,我觉得将列声明为 CLOB 并没有任何惩罚,即使所有行都包含少于 4K 的行。这准确吗?
【问题讨论】:
标签: oracle varchar clob varchar2