Desvantagem de grande LIMIT da VAR-tipos
-
21-08-2019 - |
Pergunta
Existe alguma desvantagem (exceto permitindo que o valor ou matriz para crescer muito grande) para definir o tamanho inteiro máximo de um VARCHAR ou VARRAY para um valor significativamente maior do que realmente necessário (ou defini-la para o tamanho máximo permitido) / p>
Solução
Se você está falando de uma coluna em uma tabela de banco de dados, é aconselhável definir o comprimento máximo de um VARCHAR2 ao permitido comprimento mínimo pelos requisitos - como qualquer outra restrição, que ajuda a usar estes inbuilt características do banco de dados para garantir que apenas dados válidos fica guardado (por exemplo, se um sobrenome com 1000 caracteres é entrada eu tenho certeza que vai ser errado, e talvez destacar um bug em um algum lugar programa).
No lado do PL / SQL, pode interessar a você saber que pode haver diferenças de memória (PGA) de uso, dependendo o tamanho que você declarar suas cordas em seus programas PL / SQL. Internamente, há um limite em 2000 bytes, onde o motor PL / SQL alterna entre dois esquemas de alocação de memória diferentes. por exemplo. a seguinte declaração:
DECLARE v VARCHAR2(2000); BEGIN...
irá alocar 2000 bytes na área de memória do usuário, considerando que:
DECLARE v VARCHAR2(2001); BEGIN...
só irá alocar memória quando um valor é atribuído, e só vai alocar mais memória do que é necessário para manter o valor atribuído a ele.
Outras dicas
Só não use varray, use a tabela aninhada. tabelas aninhadas pode conter um número arbitry de elementos.
Usando varchar2 (4000) em vez de varchar2 (20) em uma definição de tabela não realmente ferido porque a Oracle não reivindica a este espaço quando não é necessário.