数据检索 - Oracle中CLOB列的性能

jag*_*mot 2 java database oracle database-design

我在Oracle中有一个表,目前存储了近百万条记录.该表有2个CLOB列,用于存储XML数据.我还为这个特定的表构建了一个搜索屏幕,用户可以搜索除CLOB列之外的所有列.

现在这是我的问题 -

假设我在频繁搜索列上有正确的索引,表中是否存在CLOB列会影响性能,同时在表中搜索记录吗?

让我们说如果我将这两个CLOB列移动到一个新表中并使用主键定义与其父表的关系,它将改善记录搜索和检索方面的性能.

让我知道.

Gar*_*ers 5

LOB(包括CLOB)可以内联或外联存储.对于较小的CLOB,内联存储更为正常(例如,典型值可能是几百个字节,但偶尔有几千个条目).更多细节在这里

外部存储对应于您将这些CLOB移动到新表的说法.所以,不要打扰这样做,如果它有帮助,只需使用"行中的禁用存储"选项.

哪个更好 ?这取决于.如果没有,那么Oracle会选择最好的,而不是给你另一个选项.

存储内联意味着每行占用更多空间,因此您可以在内存缓存中拥有更少的行,这意味着您需要更频繁地访问磁盘,这样会更慢.单独存储它们意味着,当您需要这些列时,您需要获取其他数据块,可能来自磁盘而不是缓存,这将更慢.

如果你经常使用CLOB,并且它们很小,那么你可能会在行内更好.

但为什么将XML存储为CLOB而不是XMLType?