IBM DB2 9.7,内联CLOB和VARCHAR之间有什么区别?

时间:2013-04-25 06:16:04

标签: db2 varchar clob

在32k表空间中使用IBM DB2 9.7,假设10000b(万字节)长列非常适合tablespce。这两者之间是否存在差异,是否优先于另一种?

VARCHAR(10000)
CLOB(536870912) INLINE LENGTH 10000

在功能和性能方面是首选还是首选?快速浏览一下CLOB实际上是多功能的;所有短于10000的内容都存储在stablespace中,但是如果需要更大的内容那么这也很好,它只是存储在磁盘上的其他地方。

1 个答案:

答案 0 :(得分:3)

a number of restrictions on the way CLOB can be used in a query

  

特殊限制适用于导致CLOB数据的表达式   类型和结构化类型列;这样的表达式和列是   不允许进入:

     
      
  • 以DISTINCT子句开头的SELECT列表
  •   
  • GROUP BY子句ORDER BY子句set运算符other的子选择   比UNION ALL
  •   
  • 基本的,量化的,BETWEEN或IN谓词
  •   
  • 聚合函数
  •   
  • VARGRAPHIC,TRANSLATE和datetime标量函数
  •   
  • LIKE谓词或搜索中的模式操作数   POSSTR函数中的字符串操作数
  •   
  • a的字符串表示形式   日期时间值。
  •   

因此,如果您需要执行上述任何操作,则首选VARCHAR

我没有关于性能的明确答案(遗憾的是,这样的信息似乎不在文档中 - 或者至少,它不容易定位)。但是,从逻辑上讲,数据库与CLOB有更多的关系。它必须决定是否直接在结果中返回CLOB。这至少意味着一些开销。这是a good discussion of some of the issues,但它也没有给出明确的表现答案。

我的默认位置是使用VARCHAR,除非确实需要CLOB(列中的数据可能大于VARCHAR限制)。