Ressource connexion et requête

devlop78
Invité n'ayant pas de compte PHPfrance

10 juin 2011, 03:56

Bonjour à tous,

Connaissez-vous des tableaux comparatifs/explicatifs sur les ressources (en temps pour un même environnement par exemple) pour différentes actions :

- Connexion base de données
- Requête assez complexe avec pas mal de données en retour (interéssant aussi comparaison localhost/distant)
- petites requêtes nombreuses (à ce moment là, requêtes préparées, donc une seule compilation)
- Requête unique avec données redondantes ou plusieurs requêtes (exemple : chercher les catégories et pages, une seule requête = plusieurs lignes qui ont un champ "nom de catégorie", "id catégorie", etc, en commun, ou faire 1 requête pour chercher les catégories, 1 requêtes pour les pages et avec php faire le regroupement).

Je fais souvent des requêtes assez complexe générant plus ou moins de données superflues, en pensant gagner en ressources. Mais ce serait intéressant de comparer, avec des petites requêtes plus spécifiques.

Par exemple, j'ai une requête qui va me chercher une liste avec de simples informations (nom, téléphone, etc), mais aussi des plus spécifiques (dernier message), donc avec des sous requêtes imbriquées. J'ai eu l'idée de rendre l'application plus souple et de permettre l'affichage de champs de façon personnalisée. Mais cela me permet très casse figure avec une seule requête, et en me basant sur 4 listes sur une même page (donc déjà 4 requêtes), si j'ai dix lignes potentielles par liste, et que j'ai par exemple deux modules d'affichage spécifique, j'aurai 4 requêtes globales + 2*10*4 requêtes spécifiques. Cela fait quand même 84 requêtes ...

Si l'on admet qu'à seulement 3 reprises je créé la préparation de la requêtes, cela ne me fait que 3 compilations de requêtes et 84 envois simples de données et reception. Mais je pense aussi qu'il est assez gourmant pour le sgbdr de parcourir tout l'index ou plusieurs index 84 fois, que d'avoir quelque chose de complexe qui va prendre plus de ressources en une seule fois, mais où un seul passage sera nécessaire.

Par ailleurs, peut-être qu'une sorte d'ingénierie est possible en allant chercher avec 1 requête (je parle pour une liste) pour les infos en général, et une seule requêtes avec concaténation des arguments pour WHERE, des arguments pour ON (jointure), mais au risque d'avoir un truc un peu ... amateur.

Mon projet est à rendre pour bientôt, je n'ai donc ni le temps de développer ces modules, ni le temps de faire moi-même les benchmarks. Mais cela a toujours été une question que je me suis posée.

Merci par avance