mm Bueno .. explicastes lo que haces .. pero no concretastes si lo haces en una sentencia SQL (que se puede hacer) o en várias anidadas ..
EL caso es que un buen uso de indices en tus tablas y de SQL adecuado podría mejorar el actual rendimiento de tus consultas a tu BD ..
Por ejemplo .. hacer cosas como
SELECT * FROM tabla
cuando sólo quieres "unos campos" de esa tabla (no todos) .. ya de por sí estás derochando recursos así .. Deberías hacer algo tipo:
SELECT campo1,campo2 FROM tabla
(de camposN de esta supuesta tabla)
En otros casos .. "contar" registros .. dependiendo el caso es más óptimo usar SQL tipo:
SELECT COUNT(*) FROM tabla ..
que no usar mysql_num_rows() para la misma taréa ..
Si entregas muchos resultados .. paginalos .. No entregues 10.000 registros que sabes que son "dificiles" de navegar para un usuario y son alto proceso para el servidor .. paginalos en los que el usuario los va a ver comodamente hasta llegar a lo que anda buscando (por supuesto si es un listado total de esa tabla . .ahí no nos salva el paginado).
Por lo demás .. claro que las consultas a las BD consumen recursos de todo tipo (memoria en función de los resultados obtenidos .. proceso .. etc...).
Puedes ver algunos tutoriales sobre optimización de indices (enfocado a Mysql) .. sobre normalización de tus BD, SQL en general y diseño de Base de datos en sitios como:
www.mysql-hispano.com
Un saludo,