¿Crear un índice sobre campo varchar?

07/02/2004 - 13:13 por Víctor | Informe spam
Buenas.

¿Es útil crear un índice en un campo varchar? La tabla debe de tener 500000
registros (aumenta unos 50.000 cada año), y el campo en cuentión almacena
nombres de clientes.

Es que estoy liado con los índices clustered o no, factor de relleno,... y
como realizo cnsultas del tipo like '%' + @nombre + '%', no se si creando un
índice lo arreglo o no.

Muchas gracias.

Preguntas similare

Leer las respuestas

#1 Maximiliano Damian Accotto
07/02/2004 - 15:10 | Informe spam
Hola, los indices son siempre utilies si por ese campo se haran busquedas o
uniiones entre tablas, que sea varchar no deja de ser importante generarle
un indice si es necesario no.

Ahora, las busquedas %blabl% no habra indice que te ayude, para ello
deberias ver indices de Texto (busca en los manuales que hay mucha info)

Ahora con respecto al factor de relleno de un indice, la cosa mas o menos es
asi:

Los indices estan en unas paginas (imaginate que son hojas donde por ej en
la primera estan los clientes desde la A hasta la C) el factor de relleno
indica cuanto porcentaje queres tener ocupado (o libre) de esa pagina, por
lo cual si no entra un registro ahi Sqlserver generara otra paginita y asi.

Claro todo esto parece bueno, pero tambien tiene sus problemas, por eso hay
que analizar en cada caso en particular como se debe poner estos factores.

Si queres enterarte mas del tema te invito que leas tus Manuales On-line
(BOL) donde encontraras la informacion necesaria y mucho mejor explicada que
yo ;-)




Salu2 enormes

Maximiliano Damian Accotto

Fundicion San Cayetano S.A.
Gerente de IT
Buenos Aires - Argentina
-
Desarrollador 3 estrellas
http://www.microsoft.com/spanish/ms...efault.asp
-
(maxi_accotto[arroba]speedy.com.ar)
MSN:
"Víctor" escribió en el mensaje
news:ND4Vb.3213985$
Buenas.

¿Es útil crear un índice en un campo varchar? La tabla debe de tener


500000
registros (aumenta unos 50.000 cada año), y el campo en cuentión almacena
nombres de clientes.

Es que estoy liado con los índices clustered o no, factor de relleno,... y
como realizo cnsultas del tipo like '%' + @nombre + '%', no se si creando


un
índice lo arreglo o no.

Muchas gracias.


Respuesta Responder a este mensaje
#2 Jose Mariano Alvarez \(MUG\)
07/02/2004 - 15:59 | Informe spam
Todo depende del tipo de consultas que realices.

Si tienes un ID de cliente y ese campo es PK y ademas es clustered y ademas
cuando buscas solo especificas que te devuelve SOLO el ID y a lo sumo el
nombre (columna sobre la que buscas) para un where like '%' + @nombre +
'%', si creas un indice solo por esa columna te va a hacer un INDEX SCAN por
ese indice lo cual puede ser muy bueno si ademas del campo que almacena el
nombre, tienes en cada registro varios campos más que ocupan bastante
espacio, como por ejemplo cuando tienes direcciones, observaciones, y otros
campos descriptivos, etc ya que el porcentaje que ocupa solo ese campo en el
indice es bastante menor que el de todo el registro y por lo tanto es mucho
mas efectivo leer solo el indice en lugar de leer todo el registro para
hacer el SCAN

El scan es un hecho porque no puede buscarlo .puntualmente (es como que
quieras encontrar a una persona por su telefono en lugar de por su nombre en
la guia telefonica impresa).


Jose Mariano Alvarez
Comunidad de base de datos
Grupo de Usuarios Microsoft
www.mug.org.ar



"Maximiliano Damian Accotto" wrote in
message news:
Hola, los indices son siempre utilies si por ese campo se haran busquedas


o
uniiones entre tablas, que sea varchar no deja de ser importante generarle
un indice si es necesario no.

Ahora, las busquedas %blabl% no habra indice que te ayude, para ello
deberias ver indices de Texto (busca en los manuales que hay mucha info)

Ahora con respecto al factor de relleno de un indice, la cosa mas o menos


es
asi:

Los indices estan en unas paginas (imaginate que son hojas donde por ej en
la primera estan los clientes desde la A hasta la C) el factor de relleno
indica cuanto porcentaje queres tener ocupado (o libre) de esa pagina, por
lo cual si no entra un registro ahi Sqlserver generara otra paginita y


asi.

Claro todo esto parece bueno, pero tambien tiene sus problemas, por eso


hay
que analizar en cada caso en particular como se debe poner estos factores.

Si queres enterarte mas del tema te invito que leas tus Manuales On-line
(BOL) donde encontraras la informacion necesaria y mucho mejor explicada


que
yo ;-)




Salu2 enormes

Maximiliano Damian Accotto

Fundicion San Cayetano S.A.
Gerente de IT
Buenos Aires - Argentina
-
Desarrollador 3 estrellas
http://www.microsoft.com/spanish/ms...efault.asp
-
(maxi_accotto[arroba]speedy.com.ar)
MSN:
"Víctor" escribió en el mensaje
news:ND4Vb.3213985$
> Buenas.
>
> ¿Es útil crear un índice en un campo varchar? La tabla debe de tener
500000
> registros (aumenta unos 50.000 cada año), y el campo en cuentión


almacena
> nombres de clientes.
>
> Es que estoy liado con los índices clustered o no, factor de relleno,...


y
> como realizo cnsultas del tipo like '%' + @nombre + '%', no se si


creando
un
> índice lo arreglo o no.
>
> Muchas gracias.
>
>


Respuesta Responder a este mensaje
#3 Gustavo Larriera [MVP]
07/02/2004 - 16:06 | Informe spam
Las búsquedas LIKE '%string%' no se benefician con índices (porque buscan el
string DENTRO del campo). Puedes usar los servicios de Full-text Search para
ese tipo de búsquedas textuales.

Gustavo Larriera, MVP-SQL, MCSE
Uruguay LatAm

Este mensaje se proporciona "como está" sin garantías de ninguna clase, y no
otorga ningún derecho.


"Víctor" wrote in message
news:ND4Vb.3213985$
Buenas.

¿Es útil crear un índice en un campo varchar? La tabla debe de tener


500000
registros (aumenta unos 50.000 cada año), y el campo en cuentión almacena
nombres de clientes.

Es que estoy liado con los índices clustered o no, factor de relleno,... y
como realizo cnsultas del tipo like '%' + @nombre + '%', no se si creando


un
índice lo arreglo o no.

Muchas gracias.


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