2013-04-25 151 views
3

在32k的表空间中使用IBM DB2 9.7,假定一个10000b(万字节)长的列很适合在表中使用。这两者之间是否有区别,并且比另一个更受欢迎?IBM DB2 9.7,内联CLOB和VARCHAR之间的区别?

VARCHAR(10000) 
CLOB(536870912) INLINE LENGTH 10000 

在功能和性能方面是优先还是优先?快速浏览一下这两个实际上是CLOB实际上更多才多艺;所有小于10000的内容都存储在stablespace中,但是如果IF需要更大的内容,那么也没问题,它只存储在磁盘上的其他地方。

回答

3

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

特别限制适用于导致CLOB数据 类型表达式,以及结构类型列;

  • 通过DISTINCT子句
  • 一组之前BY子句ORDER BY子句的一组运营商以外 的比UNION ALL
  • A A子选择选择列表:这样的表达式和列 未在允许的基本的,量化的,之间或IN谓词
  • 一个聚集函数
  • VARGRAPHIC,翻译和日期时间标量函数
  • 所述的模式操作数LIKE谓词或搜索 POSSTR函数中的字符串操作数
  • datetime值的字符串表示形式。

所以如果你需要做任何的那些东西,VARCHAR是首选。

我没有关于性能的明确答案(不幸的是,像这样的信息似乎没有在文档中 - 或者至少是不容易找到的)。但从逻辑上讲,数据库有更多的工作要做CLOB。它必须决定是否在结果中直接返回CLOB。这意味着至少有一些开销。这里是a good discussion of some of the issues,虽然它没有给出明确的答案。

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

相关问题