IBM DB2 9.7, есть ли разница между встроенным CLOB и VARCHAR?

Используя IBM DB2 9.7, в табличном пространстве размером 32 КБ, предполагая, что столбец длиной 10000 байт (десять тысяч байт) хорошо вписывается в таблицу. Есть ли разница между этими двумя, и один предпочтительнее другого?

VARCHAR(10000)
CLOB(536870912) INLINE LENGTH 10000

Является ли или предпочтительнее с точки зрения функциональности и производительности? Бегло взглянув на них, можно сказать, что CLOB на самом деле более универсален; весь контент короче 10000 хранится в стабильном пространстве, но ЕСЛИ требуется контент большего размера, это тоже нормально, он просто хранится в другом месте на диске.


person user1340582    schedule 25.04.2013    source источник


Ответы (1)


Есть ряд ограничений на использование CLOB в запросе:

Специальные ограничения применяются к выражениям, приводящим к типу данных CLOB, и к столбцам структурированного типа; такие выражения и столбцы не разрешены в:

  • Список SELECT, которому предшествует предложение DISTINCT.
  • Предложение GROUP BY Предложение ORDER BY Подвыборка оператора набора, отличного от UNION ALL
  • Базовый, количественный предикат BETWEEN или IN
  • Агрегатная функция
  • VARGRAPHIC, TRANSLATE и скалярные функции datetime
  • Операнд шаблона в предикате LIKE или операнд строки поиска в функции POSSTR
  • Строковое представление значения даты и времени.

Поэтому, если вам нужно сделать что-то из этого, VARCHAR предпочтительнее.

У меня нет однозначного ответа насчет производительности (к сожалению, подобной информации просто нет в документации — или, по крайней мере, ее нелегко найти). Однако, логически говоря, у БД больше работы с CLOB. Он должен решить, возвращать ли CLOB непосредственно в результат или нет. Это должно означать, по крайней мере, некоторые накладные расходы. Вот хорошее обсуждение некоторых вопросов, хотя он также не дает четкого ответа о производительности.

Моей позицией по умолчанию было бы использование VARCHAR, если только CLOB действительно не требуется (данные в столбце могут быть больше, чем предел VARCHAR).

person Community    schedule 25.04.2013