Ich gebe Ihnen hier eine wilde Vermutung:Datenbank-Caching.
Wenn Sie die Seite zum ersten Mal ausführen, wird die Abfrage nicht in der Datenbank zwischengespeichert, daher dauert es länger, wodurch das Zeitlimit von PHP abläuft.
Ansonsten ist die Abfrage viel schneller.
Sie können die Abfrage entweder aufteilen, wie Sie erwähnt haben, oder Sie könnten versuchen, das Zeitlimit für das Skript zu erhöhen:
set_time_limit(0); //No time limit
set_time_limit(60); //60 seconds
Um sicherzugehen, könnten Sie dies um den Datenbank-Cache zu leeren und ihn immer zu verwenden, so dass Sie die Seite immer mit sauberem Cache ausführen.