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

problema con "order by" y optimizar consultas

Estas en el tema de problema con "order by" y optimizar consultas en el foro de Mysql en Foros del Web. Hola, tengo un problema al que el estoy dando vueltas sin encontrar la solución: Resulta que tengo un problema de saturación en el servidor por ...
  #1 (permalink)  
Antiguo 22/07/2007, 04:33
 
Fecha de Ingreso: noviembre-2003
Mensajes: 50
Antigüedad: 20 años, 5 meses
Puntos: 0
problema con "order by" y optimizar consultas

Hola, tengo un problema al que el estoy dando vueltas sin encontrar la solución:

Resulta que tengo un problema de saturación en el servidor por las consultas mysql de mi web, así que me he puesto a optimizarlas utilizando el explain de mysql, pero en todos los casos en los que utilizo el order by el explain me pone en extras Using filesort lo que quiere decir según esta recomendación de optimización
http://www.mysql-hispano.org/page.php?id=29&pag=8
que debo modificar mi consulta porque mysql necesita un paso más para ordenar la consulta.

He leido los otros post que hay sobre este tema pero no consigo encontrar la respuesta.
http://www.forosdelweb.com/f86/consulta-optimizar-tiempo-respuesta-466285/
http://www.forosdelweb.com/showthrea...light=filesort

El ejemplo concreto es este:

Código:
EXPLAIN SELECT id_materia, descripcion_materia
FROM materias
WHERE tipo_materia = 'Posters'
ORDER BY id_materia
El resultado es este:

Código:
id  	 select_type  	 table  	 type  	 possible_keys  	 key  	 key_len  	 ref  	 rows  	 Extra
1 	SIMPLE 	materias 	ref 	tipo_materia 	tipo_materia 	17 	const 	3 	Using where; Using filesort
Los indices de la tabla son:

Código:
 Table  	 Non_unique  	 Key_name  	 Seq_in_index  	 Column_name  	 Collation  	 Cardinality  	 Sub_part  	 Packed  	 Null  	 Index_type  	 Comment
materias 	0 	PRIMARY 	1 	id_materia 	A 	86 	NULL 	NULL 	  	BTREE 	 
materias 	1 	tipo_materia 	1 	tipo_materia 	A 	NULL 	NULL 	NULL 	  	BTREE 	 
materias 	1 	descripcion_materia 	1 	descripcion_materia 	A 	NULL 	NULL 	NULL 	  	BTREE
En cuanto quito el order by todo va de maravilla, pero lo necesito para ordenar los resultados de la consulta.

No sé si me está escapando algo que no pillo... a ver si alguien me puede echar una mano.

Gracias de antemano.
  #2 (permalink)  
Antiguo 23/07/2007, 02:01
Avatar de jerkan  
Fecha de Ingreso: septiembre-2005
Mensajes: 1.607
Antigüedad: 18 años, 7 meses
Puntos: 19
Re: problema con "order by" y optimizar consultas

Me sorprende que tengas problemas de rendimiento con una consulta tan sencilla.
Lo que me ha sorprendido es que tengas tantos índices en esa tabla. ¿Son necesarios los índices en la descripción y en el tipo?
  #3 (permalink)  
Antiguo 23/07/2007, 04:52
 
Fecha de Ingreso: noviembre-2003
Mensajes: 50
Antigüedad: 20 años, 5 meses
Puntos: 0
Re: problema con "order by" y optimizar consultas

Gracias por responder... te comento:

La consulta que he puesto no es precisamente la que me da problemas, pero he puesto esa porque en todos los casos el problema es el mismo, es decir que si coloco el order by me dice que tengo que mejorar la consulta, he puesto como ejemplo la más sencilla de todas para que no fuera más liosa la explicación.

En cuanto a los indices decirte que en principio sólo tenía como índices id_materia y tipo_materia pero al leer alguno de los post y enlaces que he encontrado por internet con respecto a estos problemas ponía que aquellos campos que se utlizaran para ordenar debían estar indexados y como he hecho varias pruebas con esa consulta pues por eso salen tantos índices.

Vamos que la cuestión es que sigo sin comprender porqué poniendo el order by mysql me recomienda mejorar mi consulta...
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 11:28.