pues, para empezar ninguno de tus código es correcto...
así que antes de optimizar, ¿¿puedes asegurarte de lo que haces.... ???
PDTA: si entiendo lo que pretendes...
asi que es muy simple, cada consulta de SQL genera una conexión, entonces....
que es mas óptimo ¿un query o varios???
vamos, eso es fácil de resolver....
creo que la respuesta es evidente, y en cuanto a foreach/while
con el
while que usas, solo recuperas los datos del puntero... solo has ejecutado una consulta (
eso es óptimo, además de obvio)
con el
foreach haces una consulta por cada ID ... imagínate 100 conexiones ¿eso es óptimo??