Ver Mensaje Individual
  #1 (permalink)  
Antiguo 22/07/2007, 04:33
dubafluye
 
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.