Cuándo usar varchar?

18/01/2008 - 19:38 por Alberto | Informe spam
Veo que las columnas de tipo varchar adaptan su tamaño a su contenido. ¿Hay
alguna razón para no utilizarlas siempre en lugar del tipo de dato char?
Gracias

Preguntas similare

Leer las respuestas

#1 Gux (MVP)
18/01/2008 - 19:58 | Informe spam
El tipo de datos CHAR es de largo fijo, VARCHAR es de largo variable. Una
columna de tipo CHAR siempre ocupará exactamente los mismos bytes. Una
columna VARCHAR ocupará tantos bytes según sean los datos insertados.

Por lo tanto, una primera idea es usar CHAR cuando usamos textos de largo
fijo (por ejemplo, los códigos de estados de EE.UU. son siempre de 2
caracteres, entonces es razonable que se representen usando CHAR(2)).

Mi regla personal no-científica es usar VARCHAR cuando tengo datos de texto
de largo variable, pero con una cantidad mínima de hasta 10. Si tengo datos
variables pero de menos de 10 caracteres prefiero usar CHAR(10).

En versiones antiguas de SQL Server (notablemente en 6.5), las comparaciones
de string entre datos de largo variable era menos eficiente que con largo
fijo. Eso llevaba entonces a, por ejemplo, implementar todas las claves
primarias que usaban string, a tener tipo CHAR. En las versiones actuales no
hay mucha necesidad de ese tipo de sintonías finas.




The char is a fixed-length character data type, the varchar is a
variable-length character data type.

Because char is a fixed-length data type, the storage size of the char value
is equal to the maximum size for this column. Because varchar is a
variable-length data type, the storage size of the varchar value is the
actual length of the data entered, not the maximum size for this column.

You can use char when the data entries in a column are expected to be the
same size.
You can use varchar when the data entries in a column are expected to vary
considerably in size.

Gustavo Larriera, Microsoft MVP
https://mvp.support.microsoft.com/profile/gux
Este mensaje se proporciona tal como es, sin garantías de ninguna clase.



"Alberto" wrote:

Veo que las columnas de tipo varchar adaptan su tamaño a su contenido. ¿Hay
alguna razón para no utilizarlas siempre en lugar del tipo de dato char?
Gracias



Respuesta Responder a este mensaje
#2 Ibon Landa
18/01/2008 - 22:53 | Informe spam
Además recuerda que tienes NVARCHAR y NCHAR, que permiten guardan valores
unicodes. En función de la codificación que necesites tendrás que usar estos
tipos.

Echa un ojo a este enlance que te habla de las diferentes de char y vchar.
http://technet.microsoft.com/es-es/...76089.aspx


"Gux (MVP)" escribió en el mensaje de
noticias:
El tipo de datos CHAR es de largo fijo, VARCHAR es de largo variable. Una
columna de tipo CHAR siempre ocupará exactamente los mismos bytes. Una
columna VARCHAR ocupará tantos bytes según sean los datos insertados.

Por lo tanto, una primera idea es usar CHAR cuando usamos textos de largo
fijo (por ejemplo, los códigos de estados de EE.UU. son siempre de 2
caracteres, entonces es razonable que se representen usando CHAR(2)).

Mi regla personal no-científica es usar VARCHAR cuando tengo datos de
texto
de largo variable, pero con una cantidad mínima de hasta 10. Si tengo
datos
variables pero de menos de 10 caracteres prefiero usar CHAR(10).

En versiones antiguas de SQL Server (notablemente en 6.5), las
comparaciones
de string entre datos de largo variable era menos eficiente que con largo
fijo. Eso llevaba entonces a, por ejemplo, implementar todas las claves
primarias que usaban string, a tener tipo CHAR. En las versiones actuales
no
hay mucha necesidad de ese tipo de sintonías finas.




The char is a fixed-length character data type, the varchar is a
variable-length character data type.

Because char is a fixed-length data type, the storage size of the char
value
is equal to the maximum size for this column. Because varchar is a
variable-length data type, the storage size of the varchar value is the
actual length of the data entered, not the maximum size for this column.

You can use char when the data entries in a column are expected to be the
same size.
You can use varchar when the data entries in a column are expected to vary
considerably in size.

Gustavo Larriera, Microsoft MVP
https://mvp.support.microsoft.com/profile/gux
Este mensaje se proporciona tal como es, sin garantías de ninguna clase.



"Alberto" wrote:

Veo que las columnas de tipo varchar adaptan su tamaño a su contenido.
¿Hay
alguna razón para no utilizarlas siempre en lugar del tipo de dato char?
Gracias






Respuesta Responder a este mensaje
#3 Rolando
19/01/2008 - 00:44 | Informe spam
Que buena explicacion!


"Gux (MVP)" escribió en el mensaje
news:
El tipo de datos CHAR es de largo fijo, VARCHAR es de largo variable. Una
columna de tipo CHAR siempre ocupará exactamente los mismos bytes. Una
columna VARCHAR ocupará tantos bytes según sean los datos insertados.

Por lo tanto, una primera idea es usar CHAR cuando usamos textos de largo
fijo (por ejemplo, los códigos de estados de EE.UU. son siempre de 2
caracteres, entonces es razonable que se representen usando CHAR(2)).

Mi regla personal no-científica es usar VARCHAR cuando tengo datos de
texto
de largo variable, pero con una cantidad mínima de hasta 10. Si tengo
datos
variables pero de menos de 10 caracteres prefiero usar CHAR(10).

En versiones antiguas de SQL Server (notablemente en 6.5), las
comparaciones
de string entre datos de largo variable era menos eficiente que con largo
fijo. Eso llevaba entonces a, por ejemplo, implementar todas las claves
primarias que usaban string, a tener tipo CHAR. En las versiones actuales
no
hay mucha necesidad de ese tipo de sintonías finas.




The char is a fixed-length character data type, the varchar is a
variable-length character data type.

Because char is a fixed-length data type, the storage size of the char
value
is equal to the maximum size for this column. Because varchar is a
variable-length data type, the storage size of the varchar value is the
actual length of the data entered, not the maximum size for this column.

You can use char when the data entries in a column are expected to be the
same size.
You can use varchar when the data entries in a column are expected to vary
considerably in size.

Gustavo Larriera, Microsoft MVP
https://mvp.support.microsoft.com/profile/gux
Este mensaje se proporciona tal como es, sin garantías de ninguna clase.



"Alberto" wrote:

Veo que las columnas de tipo varchar adaptan su tamaño a su contenido.
¿Hay
alguna razón para no utilizarlas siempre en lugar del tipo de dato char?
Gracias



Respuesta Responder a este mensaje
#4 Rubén Garrigós
19/01/2008 - 18:10 | Informe spam
Otro factor importante a considerar es la cantidad de actualizaciones y la
variabilidad del tamaño de la información que va a contener. Si los tamaños
son prácticamente iguales siempre (códigos de productos, DNI, codigos de
facturas, etc.) no suele compensar y es mejor optar por campos no variables.

Cuando la variabilidad es muy alta también tenemos que tener en cuenta la
frecuencia de actualización de éstos datos pues si son muy actualizados
puede convenirnos utilizar campos de tamaño fijo para evitar que si la fila
crece a posteriori tengamos problemas con page splits. El escenario ideal
para un varchar/nvarchar es cuando tenemos una columna que casi el 100% de
las veces se lee únicamente y el tamaño de la información a almacenar varía
significativamente de unas filas a otras.


Rubén Garrigós
Solid Quality Mentors

"Alberto" wrote in message
news:
Veo que las columnas de tipo varchar adaptan su tamaño a su contenido.
¿Hay alguna razón para no utilizarlas siempre en lugar del tipo de dato
char?
Gracias

email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida