Недостаток большого КОЛИЧЕСТВА типов переменных
-
21-08-2019 - |
Вопрос
Есть ли какой-либо недостаток (кроме разрешения слишком большого размера значения или массива) в установке максимального целочисленного размера VARCHAR или VARRAY на значение, значительно превышающее фактически необходимое (или устанавливающее его на максимально допустимый размер)?
Решение
Если вы говорите о столбце в таблице базы данных, рекомендуется установить максимальную длину VARCHAR2 на минимальную длину, допустимую требованиями - как и любое другое ограничение, это помогает использовать эти встроенные функции базы данных для обеспечения сохранения только допустимых данных (напримересли вводится фамилия из 1000 символов, я почти уверен, что это будет неправильно и, возможно, где-то выделит ошибку в программе).
На стороне PL / SQL вам может быть интересно узнать, что могут быть различия в использовании памяти (PGA) в зависимости от того, какой размер вы объявляете своими строками в своих программах PL / SQL.Внутренне существует пороговое значение в 2000 байт, при котором механизм PL / SQL переключается между двумя различными схемами выделения памяти.например ,следующее заявление:
DECLARE v VARCHAR2(2000); BEGIN...
выделит 2000 байт в области памяти пользователя, тогда как:
DECLARE v VARCHAR2(2001); BEGIN...
будет выделять память только тогда, когда будет присвоено значение, и будет выделять только столько памяти, сколько требуется для хранения присвоенного ему значения.
Другие советы
Просто не используйте varray, используйте вложенную таблицу.Вложенные таблицы могут содержать произвольное количество элементов.
Использование varchar2(4000) вместо varchar2(20) в определении таблицы на самом деле не повредит, потому что Oracle не претендует на это пространство, когда оно не нужно.