Foro de elhacker.net

Programación => Bases de Datos => Mensaje iniciado por: Skeletron en 22 Marzo 2010, 23:52 pm



Título: Consulta sobre indices compuesto
Publicado por: Skeletron en 22 Marzo 2010, 23:52 pm
Hola. tengo una pregunta, de rendimiento de INDICES...

La cuestion, es que en mi web, puedo buscar COMERCIOS por CALLE y NUMERO DE LA CALLE.

SIEMPRE!!!! PERO::::: SIEMPRE que busco, busco en base a esos 2 parametros. es algo así:
select * from comercios where calle='xxx' and numero='123'


Me pregunto:
Es mejor hacer un indice que abarque a las 2 columnas: CALLE y NUMERO.
O crear 1 indice para cada columna?


GRACIAS!


Título: Re: Consulta sobre indices compuesto
Publicado por: ^Tifa^ en 23 Marzo 2010, 01:03 am
Al menos yo los haria por separado. Puede que mi razones no sean del todo validas pero, son campos de diferentes tipos de datos (Uno es numerico el otro es alfanumerico). Si fueran del mismo tipo de datos lo consideraria mas viable hacerlos compuestos. Y otra de mis razones es, que me parece que por cada insercion o actualizacion que realices en MySQL, el motor tendra que volver a restructurar los indices (porque estan compuestos agrupados no confundir con clustered  ;) ).  Puede que si son pocos los cambios o pocos los indices compuestos que tengas en existencia no se afecte tanto el desempeno, pero si tienes muchos o muchas entradas puede que si afecte en algo a la larga.

Y puedo equivocarme, me estoy basando en una logica superficial que conste, y que pasara si en un futuro agregas a tu tabla otro campo llamado SECTOR crearas otro indice compuesto para el? porque habran momentos que querras consultar por CALLE y SECTOR nada mas.. y habran momentos que querras consultar por CALLE, SECTOR, NUMERO y otros por CALLE y NUMERO.

 


Título: Re: Consulta sobre indices compuesto
Publicado por: Skeletron en 23 Marzo 2010, 03:49 am
Tiffa, calle y numero, son numeros ambos. Ya que hago un inner join.

Entonces me recomiendas colocar el indice compuesto?


Título: Re: Consulta sobre indices compuesto
Publicado por: ^Tifa^ en 23 Marzo 2010, 13:24 pm
Recuerda:

por cada insercion o actualizacion que realices en MySQL, el motor tendra que volver a restructurar los indices (porque estan compuestos agrupados no confundir con clustered  ;) )

Yo pense que CALLE era alfanumerico  :xD (Nombre de calle por ejemplo) pero si dices que no, que ambos son numericos y estas seguro que no vas a agregar un campo indice 'extra' mas adelante ... pues si te saldria mas efectivo hacerlos compuestos estos dos.  ;) pero intenta no crear demasiados indices compuestos en tus tablas, por la situacion que te expuse anteriormente, si luego requieres alterar la tabla para agregar otro indice, tendras nuevamente que crear otra definicion compuesta  ;)  pero si estas seguro que no alterararas en un futuro la tabla, hazlo asi.

Un saludito.


Título: Re: Consulta sobre indices compuesto
Publicado por: Skeletron en 23 Marzo 2010, 18:32 pm
Perfecto.
Muchisimas gracias!