Ben je peux pas du tout t'aider à ce niveau en PHP. Je ne fais que de l'ASP.
Mais grossomodo, avec l'ASP, quand tu as un recordset (lorsque tu utilises les bibliothèques MSADO, qui contiennent entre autre le support ODBC) il y a des propriétés telles que CursorLocation, CursorType, LockType qui permettent d'indiquer si le curseur est côté serveur ou côté client, s'il est en mode connecté ou déconnecté, et s'il verouille les lignes de la base ou non. Ca permet entre autre de créer des lignes ou de les mettre en jour directement dans l'objet, sans avoir à effectuer la moindre requête.
Il y a aussi des propriétés à l'objet Command, qui contient la requête, tels que Filter ou Sort, qui permettent d'effectuer des filtres et des tris. Lorsqu'on bosse en mode client, avec une connection active par exemple, le order by et les conditions sont recopiés dans ces objets "filter" et "sort", afin de pouvoir les modifier dynamiquement côté client. Et ceci a évidement un coût, car il faut effectuer une copie complète de la table en mémoire.