char vs varchar (en consulta like)

03/05/2005 - 16:00 por Pablo P | Informe spam
Hola,

En una consulta SQL con un LIKE que es mas eficiente hacer la consulta sobre
una columna char o una columna varchar, es del tamaño 150 y el contenido
varia.

saludos..

Preguntas similare

Leer las respuestas

#1 Maxi
03/05/2005 - 16:21 | Informe spam
Hola, no deneria por logica existir diferencia, pero para comprobarlo no hay
nada mejor como mirar ambos planes de ejecucion


Salu2
Maxi


"Pablo P" escribió en el mensaje
news:
Hola,

En una consulta SQL con un LIKE que es mas eficiente hacer la consulta
sobre
una columna char o una columna varchar, es del tamaño 150 y el contenido
varia.

saludos..
Respuesta Responder a este mensaje
#2 Alejandro Mesa
03/05/2005 - 16:35 | Informe spam
Pablo,

No habra mucha diferencia en cuanto a eficiencia de una sentencia select que
usa like sobre una columna char o varchar siempre y cuando existan indices
apropiados. Ahora, en cuanto a espacio requerido para almacenar los valores
variables, el tipo varchar es mas apropiado para ese tamaño de cadena (150),
pues sql server hace un padding a la dercha para completar los 150 caracteres
si el tipo es char. Por lo tanto la cantidad de operaciones de lectura sera
un poquito mayor sobre un char si la longitud varia en valores. analisa los
resultados del siguiente script.

use northwind
go

create table t1 (
c1 int not null identity primary key,
c2 char(150),
)
go

create table t2 (
c1 int not null identity primary key,
c2 varchar(150),
)
go

create nonclustered index ix_nc_t1_c2 on t1(c2)
go

create nonclustered index ix_nc_t2_c2 on t2(c2)
go

set nocount on

declare @i int

set @i = 1

while @i <= 8000
begin
insert into t1 (c2) values(@i)
insert into t1 (c2) values(@i)
set @i = @i + 1
end

set nocount off
go

set statistics io on
go

set statistics time on
go

dbcc freeproccache
select c1, c2 from t1 where c2 like '5%'
go

dbcc freeproccache
select c1, c2 from t2 where c2 like '5%'
go

set statistics io off
go

set statistics time off
go

drop table t1, t2
go


AMB



"Pablo P" wrote:

Hola,

En una consulta SQL con un LIKE que es mas eficiente hacer la consulta sobre
una columna char o una columna varchar, es del tamaño 150 y el contenido
varia.

saludos..
Respuesta Responder a este mensaje
#3 Alonso
06/05/2005 - 17:33 | Informe spam
Que interesante.. quiere decir entonces que para datos de texto es
preferible el tipo varchar() ?

Me imagino que despues de cierta longitud o yo puedo siempre preferir y
generalizar siempre el uso de varchar() ?

Cuando no es conveniente usar varchar ?



"Alejandro Mesa" wrote in message
news:
Pablo,

No habra mucha diferencia en cuanto a eficiencia de una sentencia select


que
usa like sobre una columna char o varchar siempre y cuando existan indices
apropiados. Ahora, en cuanto a espacio requerido para almacenar los


valores
variables, el tipo varchar es mas apropiado para ese tamaño de cadena


(150),
pues sql server hace un padding a la dercha para completar los 150


caracteres
si el tipo es char. Por lo tanto la cantidad de operaciones de lectura


sera
un poquito mayor sobre un char si la longitud varia en valores. analisa


los
resultados del siguiente script.

use northwind
go

create table t1 (
c1 int not null identity primary key,
c2 char(150),
)
go

create table t2 (
c1 int not null identity primary key,
c2 varchar(150),
)
go

create nonclustered index ix_nc_t1_c2 on t1(c2)
go

create nonclustered index ix_nc_t2_c2 on t2(c2)
go

set nocount on

declare @i int

set @i = 1

while @i <= 8000
begin
insert into t1 (c2) values(@i)
insert into t1 (c2) values(@i)
set @i = @i + 1
end

set nocount off
go

set statistics io on
go

set statistics time on
go

dbcc freeproccache
select c1, c2 from t1 where c2 like '5%'
go

dbcc freeproccache
select c1, c2 from t2 where c2 like '5%'
go

set statistics io off
go

set statistics time off
go

drop table t1, t2
go


AMB



"Pablo P" wrote:

> Hola,
>
> En una consulta SQL con un LIKE que es mas eficiente hacer la consulta


sobre
> una columna char o una columna varchar, es del tamaño 150 y el contenido
> varia.
>
> saludos..
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida