Administrateur PHPfrance |
3088 Messages
05 janv. 2007, 01:55
cette méthode serait plus rapide ou plus simple ou moins gourmande en ressources que celle indiquée par Zeus ou par Hubert Roksor?
Il faut savoir que quand on exécute mysql_query(), PHP récupère immédiatement tous les enregistrements et les garde dans un coin de sa mémoire. (méthode appelée "buffering" ou "mise en mémoire tampon" par les vieux ou "en antémémoire" par les moins vieux)) Ensuite, chaque appel à mysql_fetch_assoc() prend le résultat dans la mémoire au lieu de faire appel à chaque fois à la base de données.
Tout ça pour dire que quand on exécute mysql_query() on a déjà tous les enregistrements en mémoire, et les mettre dans un tableau PHP revient à dupliquer ces données et donc utiliser plus de mémoire que nécessaire. (le double en gros) D'un point de vue des performances, je n'ai pas testé mais je pense qu'elles sont grossièrement équivalentes. D'un point de vue technique, l'accès à un tableau PHP est probablement plus rapide qu'appeler une fonction (mysql_fetch_assoc()) mais il faudrait prendre en compte le temps passé à créer ce tableau, etc... en gros ça n'en vaut pas la peine.
Pour info, si vous n'avez pas envie que mysql_query() charge directement tous les résultats, si vous récupérez par exemple l'intégralité d'une table, utilisez mysql_unbuffered_query() à la place. Attention, cette dernière peut être plus lente, à n'utiliser que si vous en avez besoin.