char vs varchar

11/11/2004 - 23:26 por Ducky | Informe spam
En MS SQL server.

Que diferencias hay entre char y varchar?
(claro aparte de su tipo de longitud)

Me refiero a la velocidad de las busquedas, almacenamiento, etc.

Preguntas similare

Leer las respuestas

#1 MAXI
12/11/2004 - 02:54 | Informe spam
No hya mucha con respecto a eso!! el varchar es bueno cuando el temaño
supera los 20 char mas o menos




Maxi

Buenos Aires - Argentina
Desarrollador .NET 3 Estrellas
Microsoft User Group (MUG)
Mail: Maxi_accotto[arroba]speedy.com.ar

Msn Messenger:

"Ducky" escribió en el mensaje
news:%
En MS SQL server.

Que diferencias hay entre char y varchar?
(claro aparte de su tipo de longitud)

Me refiero a la velocidad de las busquedas, almacenamiento, etc.



Respuesta Responder a este mensaje
#2 Paulino Padial
12/11/2004 - 12:59 | Informe spam
No solo es esa la diferencia, tiene mas chicha la cosa ;)

* char lo utilizas cuando preveas que los valores de datos de una columna
van a tener prácticamente el mismo tamaño. Ademas char llena con espacios
hasta el final hasta ocupar todos los bytes disponibles, por eso que la
longitud es fija, y en el modo de procesa las paginas sql server los pone al
principio.

* Utiliza los datos de tipo varchar cuando preveas que el tamaño de los
valores de datos de una columna va a variar considerablemente. Los varchar
no rellenan con espacios hasta el tamaño que pueden usar, si no que , solo
usan lo que tienen que usar. Y ademas en el modo de procesar las paginas,
los varchar los pone al final de la pagina, para que puedan crecer.

Te pongo, un ejemplo para que veas, lo que ocupa, son dos tablas creadas en
tempdb y veas, les metes valores '' vacios, y veas como el espacio usan , es
bestial. mientras que los varchar ocupan lo mismo(porque estan vacios) los
char ocupan mucho, (porque si rellenan con vacio todos los bytes ) ;)

Espero que te haya quedado claro:
create table t1 (a varchar(1000) default '' ,c varchar(1000) default '')
create table t2 (a char(1000) default '' ,c char(1000) default '')

select * From syscolumns where id=object_id('t1')
select * From syscolumns where id=object_id('t2')

set @i=0
while @i<1000
begin
insert into t1 default values
insert into t2 default values
set @i=@i+1
end

exec sp_spaceused 't1',true
exec sp_spaceused 't2',true

select count(*) from t1
select count(*) from t2

drop table t1
drop table t2

__________________________________________
Paulino Padial López


Microsoft SQL-Server Administrator.
Microsoft Certified Solution Developer
Microsoft Certified Trainer

web: http://lucer.manicomio.net

__________________________________________
"MAXI" escribió en el mensaje
news:
No hya mucha con respecto a eso!! el varchar es bueno cuando el temaño
supera los 20 char mas o menos




Maxi

Buenos Aires - Argentina
Desarrollador .NET 3 Estrellas
Microsoft User Group (MUG)
Mail: Maxi_accotto[arroba]speedy.com.ar

Msn Messenger:

"Ducky" escribió en el mensaje
news:%
> En MS SQL server.
>
> Que diferencias hay entre char y varchar?
> (claro aparte de su tipo de longitud)
>
> Me refiero a la velocidad de las busquedas, almacenamiento, etc.
>
>
>


Respuesta Responder a este mensaje
#3 Ducky
12/11/2004 - 18:08 | Informe spam
Me queda bien claro amigo, pero que hay de la velocidad y rendimiento del server ???


"Paulino Padial" escribió en el mensaje
news:
No solo es esa la diferencia, tiene mas chicha la cosa ;)

* char lo utilizas cuando preveas que los valores de datos de una columna
van a tener prácticamente el mismo tamaño. Ademas char llena con espacios
hasta el final hasta ocupar todos los bytes disponibles, por eso que la
longitud es fija, y en el modo de procesa las paginas sql server los pone al
principio.

* Utiliza los datos de tipo varchar cuando preveas que el tamaño de los
valores de datos de una columna va a variar considerablemente. Los varchar
no rellenan con espacios hasta el tamaño que pueden usar, si no que , solo
usan lo que tienen que usar. Y ademas en el modo de procesar las paginas,
los varchar los pone al final de la pagina, para que puedan crecer.

Te pongo, un ejemplo para que veas, lo que ocupa, son dos tablas creadas en
tempdb y veas, les metes valores '' vacios, y veas como el espacio usan , es
bestial. mientras que los varchar ocupan lo mismo(porque estan vacios) los
char ocupan mucho, (porque si rellenan con vacio todos los bytes ) ;)

Espero que te haya quedado claro:
create table t1 (a varchar(1000) default '' ,c varchar(1000) default '')
create table t2 (a char(1000) default '' ,c char(1000) default '')

select * From syscolumns where id=object_id('t1')
select * From syscolumns where id=object_id('t2')

set @i=0
while @i<1000
begin
insert into t1 default values
insert into t2 default values
set @i=@i+1
end

exec sp_spaceused 't1',true
exec sp_spaceused 't2',true

select count(*) from t1
select count(*) from t2

drop table t1
drop table t2

__________________________________________
Paulino Padial López


Microsoft SQL-Server Administrator.
Microsoft Certified Solution Developer
Microsoft Certified Trainer

web: http://lucer.manicomio.net

__________________________________________
"MAXI" escribió en el mensaje
news:
No hya mucha con respecto a eso!! el varchar es bueno cuando el temaño
supera los 20 char mas o menos




Maxi

Buenos Aires - Argentina
Desarrollador .NET 3 Estrellas
Microsoft User Group (MUG)
Mail: Maxi_accotto[arroba]speedy.com.ar

Msn Messenger:

"Ducky" escribió en el mensaje
news:%
> En MS SQL server.
>
> Que diferencias hay entre char y varchar?
> (claro aparte de su tipo de longitud)
>
> Me refiero a la velocidad de las busquedas, almacenamiento, etc.
>
>
>






Respuesta Responder a este mensaje
#4 Paulino Padial
13/11/2004 - 16:07 | Informe spam
pues mira, estoy haciendo un articulo pero te adelanto, que si vas a
usar 5 o 6 caracteres coje char si no vas a utilizar los bytes enteros,
si vas a usar mas usa varchar


Ducky wrote:
Me queda bien claro amigo, pero que hay de la velocidad y rendimiento del server ???


"Paulino Padial" escribió en el mensaje
news:

No solo es esa la diferencia, tiene mas chicha la cosa ;)

* char lo utilizas cuando preveas que los valores de datos de una columna
van a tener prácticamente el mismo tamaño. Ademas char llena con espacios
hasta el final hasta ocupar todos los bytes disponibles, por eso que la
longitud es fija, y en el modo de procesa las paginas sql server los pone al
principio.

* Utiliza los datos de tipo varchar cuando preveas que el tamaño de los
valores de datos de una columna va a variar considerablemente. Los varchar
no rellenan con espacios hasta el tamaño que pueden usar, si no que , solo
usan lo que tienen que usar. Y ademas en el modo de procesar las paginas,
los varchar los pone al final de la pagina, para que puedan crecer.

Te pongo, un ejemplo para que veas, lo que ocupa, son dos tablas creadas en
tempdb y veas, les metes valores '' vacios, y veas como el espacio usan , es
bestial. mientras que los varchar ocupan lo mismo(porque estan vacios) los
char ocupan mucho, (porque si rellenan con vacio todos los bytes ) ;)

Espero que te haya quedado claro:
create table t1 (a varchar(1000) default '' ,c varchar(1000) default '')
create table t2 (a char(1000) default '' ,c char(1000) default '')

select * From syscolumns where id=object_id('t1')
select * From syscolumns where id=object_id('t2')

set @i=0
while @i<1000
begin
insert into t1 default values
insert into t2 default values
set @i=@i+1
end

exec sp_spaceused 't1',true
exec sp_spaceused 't2',true

select count(*) from t1
select count(*) from t2

drop table t1
drop table t2

__________________________________________
Paulino Padial López


Microsoft SQL-Server Administrator.
Microsoft Certified Solution Developer
Microsoft Certified Trainer

web: http://lucer.manicomio.net

__________________________________________
"MAXI" escribió en el mensaje
news:

No hya mucha con respecto a eso!! el varchar es bueno cuando el temaño
supera los 20 char mas o menos




Maxi

Buenos Aires - Argentina
Desarrollador .NET 3 Estrellas
Microsoft User Group (MUG)
Mail: Maxi_accotto[arroba]speedy.com.ar

Msn Messenger:

"Ducky" escribió en el mensaje
news:%

En MS SQL server.

Que diferencias hay entre char y varchar?
(claro aparte de su tipo de longitud)

Me refiero a la velocidad de las busquedas, almacenamiento, etc.














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