БД какая mysql, postgresql, csv
Основные способы:
1. создай индексы
2. сделай лимит
2. кешируй результаты (если СУБД позволяет - например MYSQL4)
PS
насчет структурированного каталога - какой алгоритм хранения древовидной структуры ? (Если id -> parent_id то лучше поменять на nested_sets если это возможно)