Das kann auch am Index liegen, wenn der für jedes Insert neu aufgebaut werden muss. Du kannst es ja mal mit und ohne Index probieren (sofern der nicht für einen Unique-Check benötigt wird).
auch ohne index ist keine Veränderung sichtbar.
Vielleicht ist es gar nicht das DBMS sondern PHP, das die Zeit verbraucht. Kommentier mal testhalber das Execute aus.
wenn ich es auskommentiere bekomme ich nach ca. 60s ein
Fatal error: Allowed memory size of 67108864 bytes exhausted (tried to allocate 12582912 bytes)