sql >> Base de Datos >  >> RDS >> Oracle

Impacto de definir la columna VARCHAR2 con mayor longitud

La respuesta depende de si se trata de una columna en una tabla de base de datos o de una variable en un programa PL/SQL.

Columna de base de datos

La cantidad de almacenamiento utilizada es proporcional al tamaño de los datos almacenados.

Variable PL/SQL

Si la variable se declara con un tamaño de 1 a 4000 (11g+) / 1999 (10g o anterior), la memoria se asignará para la longitud máxima (es decir, VARCHAR2(100) requerirá al menos 100 bytes de memoria).

Si la variable se declara con un tamaño de 4001 (11g+) / 2000 (10g o anterior) o mayor, la memoria se asignará de acuerdo con el tamaño de los datos almacenados. (una pregunta secundaria interesante sería, si se cambia el valor de la variable, ¿cómo se cambia el tamaño de la memoria? ¿Se reasigna otro búfer con el nuevo tamaño?)

Referencia para 10g:tipos de datos PL/SQL

Las variables VARCHAR2 pequeñas están optimizadas para el rendimiento y las más grandes están optimizadas para un uso eficiente de la memoria. El punto de corte es 2000 bytes. Para un VARCHAR2 de 2000 bytes o más, PL/SQL asigna dinámicamente solo la memoria suficiente para contener el valor real. Para una variable VARCHAR2 de menos de 2000 bytes, PL/SQL preasigna la longitud completa declarada de la variable. Por ejemplo, si asigna el mismo valor de 500 bytes a una variable VARCHAR2 (2000 BYTE) y a una variable VARCHAR2 (1999 BYTE), la primera ocupa 500 bytes y la segunda ocupa 1999 bytes.

Referencia para 11g:Cómo evitar la sobrecarga de memoria en código PL/SQL

Especifique un tamaño de más de 4000 caracteres para la variable VARCHAR2; PL/SQL espera hasta que asigne la variable, luego solo asigna tanto almacenamiento como sea necesario