Logicamente, si quieres agilizar una consulta con 30.000 registros no sera tan rapido como uno que tenga mil, pero bueno, tiene sus trucos.
primeramente, no se como estara diseñada esta base de datos, pero toda la informacion que consideres poco importante, la quitaria de la tabla principal.
Toda la informacion redundante, la separaria de la tabla principal y l aañadiria a una tabla digamos "hijo" de la principal con una clave foranea en las dos para poder recuperar esa info cuando desees.
Separar info en tablas evita que en las consultas se lea info que a lo mejor esa misma consulta no necesita. PEsa menos y, por lo tanto es mas rapida. Eso si, hay que cuidar como hacer estas separaciones. Hazte un diseño (puedes empezar por lapiz y papel o, si lo prefieres descargate un programa para el diseño de una base de datos dbdesigner-> es gratuito y bastante bueno).
Por otro lado, si quieres rapidez por lo que se refiere a las consultas en php+mysql, utiliza mejor la sentencia mysql_fetch_assoc (es la que gasta menos recursos) para recuperar mas rapidamente los resultados de tu query.
Espero te sirvan estos pocos consejos. Mucha suerte co
mpañero