Saya akan memberi Anda tebakan liar di sini:Caching basis data.
Saat pertama kali Anda menjalankan halaman, kueri tidak di-cache dalam database, sehingga membutuhkan waktu lebih lama, sehingga batas waktu PHP berakhir.
Di lain waktu, kueri jauh lebih cepat.
Anda dapat membagi kueri, seperti yang Anda sebutkan, atau Anda dapat mencoba meningkatkan batas waktu pada skrip:
set_time_limit(0); //No time limit
set_time_limit(60); //60 seconds
Yang pasti, Anda bisa menggunakan ini untuk membersihkan cache database dan menggunakannya selalu sehingga Anda akan selalu menjalankan halaman dengan cache yang bersih.