sql >> Databáze >  >> RDS >> Mysql

Výsledky dotazu ORM:Popisovač pole vs výsledek zabalený do rozhraní iterátoru

Záleží na tom, jakou databázi používáte, a na konfiguraci databáze.

Pro MySQL se musíte ujistit, že používáte dotazy s vyrovnávací pamětí. V PDO to nastavíte takto:

$myPdo->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, true);

To znamená, že všechna data budou odeslána klientovi (není to stejné jako načtení všech v PHP).

Druhou (pravděpodobně horší) alternativou je otevřít nové připojení k databázi, kdykoli zjistíte, že je spuštěn dotaz se stále otevřenou sadou výsledků.

Normální mysql_query() používá dotaz ve vyrovnávací paměti, takže bude fungovat s více sadami výsledků.




  1. Najděte řádky s odloženými obdobími a shromážděte jejich trvání

  2. Mám spouštěč autonomní, ale spustím se pouze jednou ve stejné relaci

  3. MySQL zobrazuje součet rozdílu dvou hodnot

  4. Vyberte řádky, které nejsou přítomny v jiné tabulce