У меня есть цикл с кучей query.exec(), и вся проблема что каждый exec() жрет много катастрофически важного времени.
Если каждый запрос жрёт много времени, то почему Вы думаете что все разом они сожрут меньше времени?
Если запросы идентичны (меняются только данные), как например при вставке большого кол-ва данных в одну таблицу, то полезно один раз выполнить prepare() и потом много раз выполнять bind()/exec(). Впрочем это уже зависит от задачи и используемой СУБД.