Discussion:
Tipo de datos char o varchar
(demasiado antiguo para responder)
Vicks
2004-07-22 20:44:37 UTC
Permalink
Hola,



Según tengo entendido, char se usa cuando los datos a almacenar tienen una
longitud fija (por ejemplo, char(5) para el código postal) y varchar para
datos de longitud variable. La duda que tengo es como afecta esto a los
recursos del servidor, ya que supongo que para gestionar esa variabilidad en
el tamaño de los datos, SQL tendrá que reservar unos recursos para ello.



Gracias.



Vicks
Isaías
2004-07-22 21:07:39 UTC
Permalink
Vicks

No creo que le "AFECTE", por el contrario, ahorra en el
almacenamiento de los datos.
Gustavo Larriera [MVP SQL]
2004-07-23 00:22:25 UTC
Permalink
/* copy&paste de los Books Online (BOL) de la instalación SQL Server */

a.. Utilice char cuando prevea que los valores de datos de una columna van
a tener prácticamente el mismo tamaño.


b.. Utilice datos de tipo varchar cuando prevea que el tamaño de los
valores de datos de una columna va a variar considerablemente.
--
Gustavo Larriera
Uruguay LatAm
http://sqljunkies.com/weblog/gux/
--
Este mensaje se proporciona "COMO ESTA" sin garantias y no otorga ningun
derecho / This posting is provided "AS IS" with no warranties, and confers
no rights.
--
Post by Vicks
Hola,
Según tengo entendido, char se usa cuando los datos a almacenar tienen una
longitud fija (por ejemplo, char(5) para el código postal) y varchar para
datos de longitud variable. La duda que tengo es como afecta esto a los
recursos del servidor, ya que supongo que para gestionar esa variabilidad en
el tamaño de los datos, SQL tendrá que reservar unos recursos para ello.
Gracias.
Vicks
Vicks
2004-07-23 15:52:20 UTC
Permalink
Gracias de nuevo por tu respuesta.

Entiendo entonces que para valores fijos es recomendable char y para valores
variables varchar. Sería interesante utilizar un tipo de datos varchar para
la clave principal.

Gracias de nuevo. Un saludo.

Vicks
Post by Gustavo Larriera [MVP SQL]
/* copy&paste de los Books Online (BOL) de la instalación SQL Server */
a.. Utilice char cuando prevea que los valores de datos de una columna van
a tener prácticamente el mismo tamaño.
b.. Utilice datos de tipo varchar cuando prevea que el tamaño de los
valores de datos de una columna va a variar considerablemente.
--
Gustavo Larriera
Uruguay LatAm
http://sqljunkies.com/weblog/gux/
--
Este mensaje se proporciona "COMO ESTA" sin garantias y no otorga ningun
derecho / This posting is provided "AS IS" with no warranties, and confers
no rights.
--
Post by Vicks
Hola,
Según tengo entendido, char se usa cuando los datos a almacenar tienen una
longitud fija (por ejemplo, char(5) para el código postal) y varchar para
datos de longitud variable. La duda que tengo es como afecta esto a los
recursos del servidor, ya que supongo que para gestionar esa
variabilidad
Post by Gustavo Larriera [MVP SQL]
en
Post by Vicks
el tamaño de los datos, SQL tendrá que reservar unos recursos para ello.
Gracias.
Vicks
ulises
2004-07-23 15:40:04 UTC
Permalink
En cuanto a almacenamiento, por cada columna VARCHAR se
agrega un overhead de 2 bytes, por ello es recomendable
que si tus columnas tienen generalmente un tamaño fijo es
mejor emplear CHAR. En cuanto a rendimiento, no estoy muy
seguro ya que si bien por el lado de los VARCHAR hay un
overhead por el cálculo del tamaño de la columna hay un
ahorro en cuanto a lectura ya que en una página existirían
mayor cantidad de filas con columnas VARCHAR que si fuesen
CHAR.

Saludos,
Ulises
-----Mensaje original-----
Hola,
Según tengo entendido, char se usa cuando los datos a
almacenar tienen una
longitud fija (por ejemplo, char(5) para el código
postal) y varchar para
datos de longitud variable. La duda que tengo es como
afecta esto a los
recursos del servidor, ya que supongo que para gestionar
esa variabilidad en
el tamaño de los datos, SQL tendrá que reservar unos
recursos para ello.
Gracias.
Vicks
Vicks
2004-07-23 16:08:30 UTC
Permalink
Gracias por tu respuesta Ulises,

Se podría decir entonces que varchar es superior a char en almacenamiento y
al contrario en rendimiento?

Un saludo.

Vicks

"ulises" <***@terra.com.pe> escribi� en el mensaje news:2e8701c470cb$52e221c0$***@phx.gbl...
En cuanto a almacenamiento, por cada columna VARCHAR se
agrega un overhead de 2 bytes, por ello es recomendable
que si tus columnas tienen generalmente un tamaño fijo es
mejor emplear CHAR. En cuanto a rendimiento, no estoy muy
seguro ya que si bien por el lado de los VARCHAR hay un
overhead por el cálculo del tamaño de la columna hay un
ahorro en cuanto a lectura ya que en una página existirían
mayor cantidad de filas con columnas VARCHAR que si fuesen
CHAR.

Saludos,
Ulises
-----Mensaje original-----
Hola,
Según tengo entendido, char se usa cuando los datos a
almacenar tienen una
longitud fija (por ejemplo, char(5) para el código
postal) y varchar para
datos de longitud variable. La duda que tengo es como
afecta esto a los
recursos del servidor, ya que supongo que para gestionar
esa variabilidad en
el tamaño de los datos, SQL tendrá que reservar unos
recursos para ello.
Gracias.
Vicks
Javier Loria
2004-07-23 17:23:40 UTC
Permalink
Hola:
Me parece que lo que Ulises dice:
==========================
Contenido Fijo ---> CHAR
Contenido Variable ---> VARCHAR
==========================
En una columna de 5 caracteres no puede haber mucha variacion, mi
recomendacion seria CHAR.
Saludos,


Javier Loria
Costa Rica
Se aprecia la inclusion de DDL (CREATE, INSERTS, etc.)
que pueda ser copiado y pegado al Query Analizer.
La version de SQL y Service Pack tambien ayuda.
Post by Vicks
Gracias por tu respuesta Ulises,
Se podría decir entonces que varchar es superior a char en
almacenamiento y al contrario en rendimiento?
Un saludo.
Vicks
En cuanto a almacenamiento, por cada columna VARCHAR se
agrega un overhead de 2 bytes, por ello es recomendable
que si tus columnas tienen generalmente un tamaño fijo es
mejor emplear CHAR. En cuanto a rendimiento, no estoy muy
seguro ya que si bien por el lado de los VARCHAR hay un
overhead por el cálculo del tamaño de la columna hay un
ahorro en cuanto a lectura ya que en una página existirían
mayor cantidad de filas con columnas VARCHAR que si fuesen
CHAR.
Saludos,
Ulises
-----Mensaje original-----
Hola,
Según tengo entendido, char se usa cuando los datos a
almacenar tienen una
longitud fija (por ejemplo, char(5) para el código
postal) y varchar para
datos de longitud variable. La duda que tengo es como
afecta esto a los
recursos del servidor, ya que supongo que para gestionar
esa variabilidad en
el tamaño de los datos, SQL tendrá que reservar unos
recursos para ello.
Gracias.
Vicks
Lázaro
2004-07-27 11:13:16 UTC
Permalink
Ten cuidado con las modificaciones masivas.

Cuando en SQL Server realizas un UPDATE, puede hacerlo en modo Directo, es
decir, en la misma fila donde estaba el dato anterior, o borrar la fila e
insertar la nueva. Esto afecta al rendimiento(más rápido uno directo) y al
log de transacciones (menos espacio consumido).

Uno de los requerimientos por los que nunca usará un modo directo, es el
varchar, el otro los NULL, ya que como cada fila puede tener un tamaño
distinto, nunca evalua si los nuevos datos caben en el mismo sitio que los
antiguos.

Una vez revisado que sobre las tablas que tengas muchos varchar, o nulls, no
vas a realizar muchos updates masivos, o sea cambiar 10.000 registros de una
vez y cosas así. Lo mejor de los varchar, es que viaje menos información,
porque los chars devuelve los espacios en blanco, y como aprovecha el
espacio, en menos espacio, más filas, más rápidas las consultas.

Salu2.
Post by Vicks
Hola,
Según tengo entendido, char se usa cuando los datos a almacenar tienen una
longitud fija (por ejemplo, char(5) para el código postal) y varchar para
datos de longitud variable. La duda que tengo es como afecta esto a los
recursos del servidor, ya que supongo que para gestionar esa variabilidad en
el tamaño de los datos, SQL tendrá que reservar unos recursos para ello.
Gracias.
Vicks
Loading...