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)

Foi útil?

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.

fórum Oracle: "alocação de espaço VARCHAR2"

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top