Buscar en Google parece haber informes mixtos sobre si el tamaño de una VARCHAR2
columna en Oracle afecta el rendimiento o no.
Me gustaría darle VARCHAR
un pequeño giro a la cuestión del tamaño y espero tener alguna idea al respecto:
Dados campos de texto libre (multilínea) ( no cosas cortas como nombres) que desea almacenar en una base de datos (Oracle), ¿hay algún punto (wrt. Rendimiento u otro) en no maximizar la VARCHAR
capacidad ( VARCHAR2(4000)
en Oracle) sino elegir un valor menor como 1024 o 512 porque de todos modos es probable que sea suficiente en el 98% de los casos.
oracle
performance
varchar
Martín
fuente
fuente
Respuestas:
Afecta el uso de memoria, especialmente cuando un programa cliente tiene que asignar suficiente memoria para recibir un conjunto de datos.
Tenga en cuenta que muchas aplicaciones (especialmente aplicaciones web) usan UTF-8, que es un conjunto de caracteres de varios bytes. Como tal, realmente debería considerar los caracteres en lugar de los bytes.
Si esperaba más de mil caracteres, entonces consideraría activamente un CLOB. Estaría pensando si almacenará texto sin formato o alguna forma de marcado (wiki / html?), Uso con idiomas no euro. Las preguntas y respuestas aquí, por ejemplo, serían CLOB, pero los comentarios pueden caber en un VARCHAR.
Si maximizas un VARCHAR, entonces en seis meses alguien querrá hacerlo más grande nuevamente, y estarías pateándote por no usar un CLOB.
fuente
En general, no hay consideraciones de rendimiento, aunque existen problemas secundarios que pueden ser importantes para usted. El límite para a
varchar
debe considerarse como una restricción como cualquier otra: está ahí para hacer cumplir una regla de negocios.En mi opinión, la pregunta que debe hacerse es "¿Quiero evitar que los datos de texto libre almacenados en este campo sean más largos que n bytes / caracteres", ese es el único factor determinante al elegir entre
varchar(512)
yvarchar(4000)
.Tenga en cuenta que estoy asumiendo que está hablando sobre
varchar
el tipo de SQL: la situación es diferentepl/sql
y la elección de la longitud puede ser crucial por razones de asignación de memoria.fuente
clob
, ¿no?Si un valor más pequeño funcionará para el 98% de los casos, pero se necesita un Varchar2 (4000) para funcionar para el 100% de los casos, entonces no tiene más remedio que usar el valor más grande . Crear una tabla separada para el 2% de los valores y luego coordinar las inserciones / selecciones, etc. agregaría una complejidad que eliminaría cualquier beneficio de memoria o rendimiento al no extender el campo.
fuente