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

Empleo de varios índices en una tabla

Estas en el tema de Empleo de varios índices en una tabla en el foro de Mysql en Foros del Web. Deseo tener 3 indices en una misma tabla Llave int(11) --> Llave 1 Nombre char(60) --> Llave 2 Departamento int(5) --> Llave 3 Precio Deseo ...
  #1 (permalink)  
Antiguo 08/10/2012, 20:50
 
Fecha de Ingreso: enero-2002
Mensajes: 1.174
Antigüedad: 22 años, 9 meses
Puntos: 21
Empleo de varios índices en una tabla

Deseo tener 3 indices en una misma tabla

Llave int(11) --> Llave 1
Nombre char(60) --> Llave 2
Departamento int(5) --> Llave 3
Precio

Deseo mostrar las filas ordenadas por cualquier índice.
Por ahora lo hago con: ORDER BY pero requiero hacerlo con índices.

Soy programador FoxPro y traigo aprendizaje que no es MySQL, por lo que pido comprensión si me expreso inadecuadamente.

Una vez que ya tengo creada la tabla y sus índices, al generar la consulta ¿En donde indico a MySQL cual índice se debe utilizar para emitir los resultados?

Agradeceré alguna orientación y si es posible algún artículo en la web.

Gracias
  #2 (permalink)  
Antiguo 09/10/2012, 04:35
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, 11 meses
Puntos: 2658
Respuesta: Empleo de varios índices en una tabla

Creo que no tienes claro el uso de los indices en un DBMS, por lo que te recomendaría leer más profundamente el tema.
Los indices no se usan para ordenar un resultado, sino para optimizar las consultas que se hacen. Para obtener los datos. Allí es donde está su efecto fundamental.
El ordenamiento es controlado especialmente por la cláusula ORDER BY, y su algoritmo hasta lo que conozco, omite los indices si los mismos no han sido usados por las cláusulas SELECT/FROM/WHERE en algún momento, ya que eso implicaría que su clave no fue parte del cálculo.
Lo que seguro que no puede hacerse, es indicarle al ORDER BY que use un determinado índice, porque no hay relación directa entre esa cláusula y el uso de los mismos.

En esencia, si bien se puede forzar a usar un indice (con la clausula FORCE INDEX en el FROM), eso no es lo habitual. Lo normal es que sea el mismo MySQL el que decida qué indices y en qué circunstancias usarlo.

¿Se entiende medianamente la diferencia entre lo que quieres y lo que realmente es?

Necesitas leer el tema para comprenderlo mejor, por lo que te sugiero leer el manual de referencia, donde hay un capítulo dedicado precisamente a cómo usa MySQL los índices.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 09/10/2012 a las 11:16
  #3 (permalink)  
Antiguo 09/10/2012, 22:47
 
Fecha de Ingreso: enero-2002
Mensajes: 1.174
Antigüedad: 22 años, 9 meses
Puntos: 21
Respuesta: Empleo de varios índices en una tabla

Hola gnzsoloyo,

Gracias por tus comentarios, me has dado la respuesta que buscaba, ya imaginaba que así lo hace MySQL y es:
"Lo normal es que sea el mismo MySQL el que decida qué indices y en qué circunstancias usarlo."

--------------

Agradezco tu tiempo para redactar una respuesta tan clara, tu presencia es fundamental en este foro. Solo deseo comentar, sin tratar de crear polémica en:
"Los indices no se usan para ordenar un resultado, sino para optimizar las consultas que se hacen.", lo que dices es cuestión de semántica, que en este caso no es lo que más importa.

Agradezco tu respuesta clara a lo que yo buscaba.
Saludos

Etiquetas: empleo, sql, tabla
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 00:57.