2012-07-31 60 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