Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

¿Se justifica indexar campos ORDER BY?

Estas en el tema de ¿Se justifica indexar campos ORDER BY? en el foro de Mysql en Foros del Web. ¡Hola! Me encontraba creando tablas y en algunas de ellas doy con que hay varios campos que muy frecuentemente serán usados en cláusulas ORDER BY, ...
  #1 (permalink)  
Antiguo 17/08/2008, 17:27
 
Fecha de Ingreso: abril-2004
Mensajes: 49
Antigüedad: 20 años
Puntos: 1
¿Se justifica indexar campos ORDER BY?

¡Hola!
Me encontraba creando tablas y en algunas de ellas doy con que hay varios campos que muy frecuentemente serán usados en cláusulas ORDER BY, pero que rara vez serán usados en cláusulas WHERE para cualquier consulta.
La pregunta entonces es: al crear índices, ¿Se justifica crear un índice (cluster) con esos campos? ¿sólo debo tener en cuenta los campos que usaré con frecuencia en cláusulas WHERE?
¿o un índice debe contener tanto los campos WHERE como los ORDER BY?
__________________
OS: Win 2k pc: duron 1800+ 384mb ram dimm
mother: pcchips.. creo
3d: geforce 4 fx5200 128mb
audio: philips seismic edge psc705
  #2 (permalink)  
Antiguo 17/08/2008, 19:10
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: ¿Se justifica indexar campos ORDER BY?

1. Un índice cluster es un índice primario definido al crear la PRIMARY KEY, y es el que mantiene el ordenamiento físico de los registros en el disco. Como tal es un índice único por tabla. Si esa tabla tiene un campo autoincremental, ese campo es la PK. No podrás definir otro...
2. El hecho que haya un conjunto de campos usuales en una cláusula ORDER BY no significa necesariamente que requieras hacer un índice determinado, ya que el índice se debe definir sobre los campos usados en WHERE. El sentido de los índices es buscar, no ordenar. El ordenamiento de un índice tiene por objeto el encontrar los registros buscados.
3. El ORDER BY es una operación que se realiza al terminar el proceso de la consulta, por lo cual aunque hubiese un índice definido en esos campos, no tendría efecto en el ordenamiento del resultado de la consulta misma. Tampoco aceleraría la consulta en sí, ya que, como dije, esta se ejecuta antes de cualquier ordenamiento. Por esa razón no tiene sentido usar índices en campos que no sean los del WHERE.

¿Se entiende?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:27.