2012-07-31 145 views
0

我必须将可变长度的文本存储在oracle表中。他们中的大多数将少于200个字符,但其中一些偶尔会有数千个字符。oracle数据库中的NCLOB列与NVARCHAR

我很想将列定义为NCLOB,因为此数据类型最多可以存储4 GB,但我不知道这样做会产生什么问题,因为在98%的时间内,列的数据量足够大。

  • 一旦插入值,这些值就不会轻易改变。
  • 会有成千上万的记录。

感谢

回答

1

即使是%2,数据是,对不对?您必须存储这些少数数据,因此您必须使用CLOB

+0

你是对的,但替代方案将是一个更复杂的表结构。也许1个NVARCHAR列和另一个NCLOB,或类似的东西。但是,如果使用唯一一个NCLOB列(将有数十万条记录)没有性能问题,我会采用更简单的方式。 – klautern 2012-07-31 10:31:01

+0

当你创建一个'NCLOB'字段时,db创建'LOBINDEX'并将字段数据存储在'index'中。如果你创建一个'NVARCHAR'字段,db只创建用于存储字段数据的表段。如果大多数查询都是“SELECT”查询,则应该使用“NCLOB”字段,因为它是预索引的。但要小心,您的INSERT和UPDATE将比NVARCHAR解决方案慢。您也可以在'NVARCHAR'上创建一个手动索引,但这可能会花费您近一倍的数据量。至于使用'NCLOB'的存储方面是有益的。但对于'DML'速度,请使用'NVARCHAR'字段。 – 2012-07-31 12:42:46