ops, i pressed enter without full message, sorry

from mysql 4.1 (when sub query started) i "ported" my queries to something like:
SELECT XXXX
FROM table1,table2
WHERE 
(joins go here) AND 
(filters go here)
GROUP BY fields
ORDER BY fields
LIMIT xxxx
OFFSET xxxx

example..

SELECT 
SUM( CantidadPedida ) AS SumPedida,
SUM( CantidadRecibida ) AS SumRecibida,
ArticuloCodigo, ArticuloNombre, ArticuloCosto,
ArticulosDisponibles, ArticuloUnidad

FROM ArticulosPedidos, PedidosIndex,CatArticulos
WHERE
PedidosIndex.NumDePedido = ArticulosPedidos.NumDePedido AND
ArticulosPedidos.ArticuloID = CatArticulos.ArticuloID AND 

ArticulosPedidos.Fecha BETWEEN '{$_POST['MovsDelAno']}-{$_POST['MovsDelMes']}-{$_POST['MovsDelDia']}' AND '{$_POST['MovsAlAno']}-{$_POST['MovsAlMes']}-{$_POST['MovsAlDia']}'

GROPU BY ArticulosPedidos.ArticuloID
ORDER BY SumPedida DESC 
LIMIT 500

----
other tip, instead of full table name, *USE* alias
FROM ArticulosPedidos AS a, PedidosIndex AS b, CartArticulos AS c
b.NumDePedido=a.NumDePedido AND
a.ArticuloID=c.ArticuloID

this decrease TCP/IP or UNIX SOCKET packets... if you have a very high qps (query per second) this can save a lot of ethernet, example
1000 queries of 1KB=1MB/second , if you can save near to 50B per query, you will use 950*1000 = 950KB, in other words, you can send 5% more bytes over network without changing hardware
---