2013-04-25 6 views
3

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

VARCHAR(10000) 
CLOB(536870912) INLINE LENGTH 10000 

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

ответ

3

Есть a number of restrictions on the way CLOB can be used in a query:

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

  • списка выбора предшествует отчетливого пункт
  • группы пункта заказа по п подвыбор из множества оператора другого , чем UNION ALL
  • A основные, количественно, между ними, или в предикате
  • агрегатной функции
  • VARGRAPHIC, ПЕРЕВЕСТИ, и DateTime скалярных функции
  • шаблон операнд в предикат LIKE или поиск операнда в функции POSSTR
  • Строковое представление значения даты и времени .

Так что, если вам нужно сделать какие-либо из этих вещей, VARCHAR является предпочтительным.

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

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

Смежные вопросы