【问题标题】:IBM DB2 9.7, any difference between inlined CLOB and VARCHAR?IBM DB2 9.7,内联 CLOB 和 VARCHAR 之间有什么区别?
【发布时间】:2013-04-25 06:16:04
【问题描述】:

使用 IBM DB2 9.7,在 32k 表空间中,假设 10000b(一万字节)长的列非常适合表空间。这两者之间有区别吗?哪一个比另一个更受欢迎?

VARCHAR(10000)
CLOB(536870912) INLINE LENGTH 10000

在功能和性能方面是首选还是首选?快速浏览一下两者会发现 CLOB 实际上更通用。所有小于 10000 的内容都存储在 stablespace 中,但如果需要更大的内容,那也没关系,它只是存储在磁盘的其他位置。

【问题讨论】:

    标签: db2 varchar clob


    【解决方案1】:

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

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

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

    因此,如果您需要做任何这些事情,VARCHAR 是首选。

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

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

    【讨论】:

      猜你喜欢
      • 2011-10-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-30
      • 2010-12-25
      • 2013-10-21
      • 1970-01-01
      • 2012-12-17
      相关资源
      最近更新 更多