Вопрос

Есть ли какой-либо недостаток (кроме разрешения слишком большого размера значения или массива) в установке максимального целочисленного размера VARCHAR или VARRAY на значение, значительно превышающее фактически необходимое (или устанавливающее его на максимально допустимый размер)?

Это было полезно?

Решение

Если вы говорите о столбце в таблице базы данных, рекомендуется установить максимальную длину VARCHAR2 на минимальную длину, допустимую требованиями - как и любое другое ограничение, это помогает использовать эти встроенные функции базы данных для обеспечения сохранения только допустимых данных (напримересли вводится фамилия из 1000 символов, я почти уверен, что это будет неправильно и, возможно, где-то выделит ошибку в программе).

На стороне PL / SQL вам может быть интересно узнать, что могут быть различия в использовании памяти (PGA) в зависимости от того, какой размер вы объявляете своими строками в своих программах PL / SQL.Внутренне существует пороговое значение в 2000 байт, при котором механизм PL / SQL переключается между двумя различными схемами выделения памяти.например ,следующее заявление:

DECLARE v VARCHAR2(2000); BEGIN...

выделит 2000 байт в области памяти пользователя, тогда как:

DECLARE v VARCHAR2(2001); BEGIN...

будет выделять память только тогда, когда будет присвоено значение, и будет выделять только столько памяти, сколько требуется для хранения присвоенного ему значения.

Форум Oracle:"Распределение пространства VARCHAR2"

Другие советы

Просто не используйте varray, используйте вложенную таблицу.Вложенные таблицы могут содержать произвольное количество элементов.

Использование varchar2(4000) вместо varchar2(20) в определении таблицы на самом деле не повредит, потому что Oracle не претендует на это пространство, когда оно не нужно.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top