Nombre de requete sql
15 messages • Page 1 sur 1
Consultez la formation au référencement naturel Google de WebRankInfo / Ranking Metrics
Nombre de requete sql
Bonjour, j'ai une question à propos du nombre de requête sql.
Pour commencer nous avons une table sql avec 10 champs dedans
champ1, champ2, champ3, ... ,champ10
Maintenant imaginons 2 pages php différentes.
Page 1 : (nous avons 2 requêtes dedans)
Page 2 : (nous avons 1 seule requête dedans)
Ma question : Faut-il mieux avoir 2 requêtes qui sélectionnent uniquement les champs nécessaires, ou une seule qui sélectionne tous les champs d'un coup?
En rapidité lequel est la meilleure solution?
Merci
Pour commencer nous avons une table sql avec 10 champs dedans
champ1, champ2, champ3, ... ,champ10
Maintenant imaginons 2 pages php différentes.
Page 1 : (nous avons 2 requêtes dedans)
- Code: Tout sélectionner
$sql1 = Select champ1, champ2 from table;
$sql2 = Select champ3, champ8, champ10 from table;
Page 2 : (nous avons 1 seule requête dedans)
- Code: Tout sélectionner
$sql = Select * from table;
Ma question : Faut-il mieux avoir 2 requêtes qui sélectionnent uniquement les champs nécessaires, ou une seule qui sélectionne tous les champs d'un coup?
En rapidité lequel est la meilleure solution?
Merci
Le mieux c'est de faire en une requête et de sélectionner ce dont tu as besoin :
Si tu as besoin de tous les champs alors *.
- Code: Tout sélectionner
Select champ1, champ2, champ3, champ8, champ10 from table;
Si tu as besoin de tous les champs alors *.
-

SuperCureuil - WRInaute passionné

- Messages: 662
- Inscription: Ven Mar 09, 2007 9:44
Ben comme Bactéries l'a dit, une seule requête, mais je pense qu'il doit y avoir quiproquo là 
C'est clair qu'on dirait qu'il y a comme un quiproquo
Comme conseillé plus haut regrouper les deux requêtes en une est plus rapide puisque tu n'interrogera qu'une seule fois la base de données tout en ayant la possibilité d'utiliser les résultats à plusieurs reprises sinon tu peux voir pour faire des jonctions de requêtes si cela te convient mieux.
@+
sff a écrit:Ma question : Faut-il mieux avoir 2 requêtes qui sélectionnent uniquement les champs nécessaires, ou une seule qui sélectionne tous les champs d'un coup?
sff a écrit:Non Bacteries, pour des raisons techniques, je suis obligé d'avoir 2 requetes, sinon j'aurais suivis ton idée.
Alors a votre avis, laquel des 2 propositions est la mieux?
Comme conseillé plus haut regrouper les deux requêtes en une est plus rapide puisque tu n'interrogera qu'une seule fois la base de données tout en ayant la possibilité d'utiliser les résultats à plusieurs reprises sinon tu peux voir pour faire des jonctions de requêtes si cela te convient mieux.
@+
suite
Non en fait c'est plus compliqué que ca. J'ai du faire une image pour que ca soit compréhensible :
Dans l'exemple 1, on récupère via une include et des global, la seule requete $sql pour s'en servir dans les 3 pages. La requete sélectionne tous les champs d'un coup que ca fonctionne dans les 3 pages
Dans l'exemple 2, dans chaque page il y a une requete qui selectionne uniquement le champ nécéssaire. Chaque page fonctionne avec sa propre requete.
Alors d'après vous qu'elle est la meilleure solution?
Une requete unique pour plusieurs page avec un (*) ou plusieurs requete qui sélectionnent juste le nécéssaire?
Dans l'exemple 1, on récupère via une include et des global, la seule requete $sql pour s'en servir dans les 3 pages. La requete sélectionne tous les champs d'un coup que ca fonctionne dans les 3 pages
Dans l'exemple 2, dans chaque page il y a une requete qui selectionne uniquement le champ nécéssaire. Chaque page fonctionne avec sa propre requete.
Alors d'après vous qu'elle est la meilleure solution?
Une requete unique pour plusieurs page avec un (*) ou plusieurs requete qui sélectionnent juste le nécéssaire?
suite
Si je te donne le code réel, tu comprendra encore moins.
Pourtant avec l'image c'est pas compliqué.
Parce que dans l'exemple 1, la requête globale sélectionne tous les champs, et par conséquent des champs inutile. Par exemple la page 3 à besoin uniquement du champ 3 pour fonctionner, et pourtant la requete globale sélectionne tous les champs. Donc en terme d'optimisation j'aimerais savoir si c'est pas mieux d'avoir une requete par page, qui sélectionne juste les champs dont la page a besoin, au lieu de tout prendre d'un coup avec une variable globale.
C'est tellement simple pourtant à comprendre.
Pourtant avec l'image c'est pas compliqué.
Les valeurs des différents "champ" te sont donné par ta requête globale quelle est l'intérêt d'en faire une nouvelle ?
Parce que dans l'exemple 1, la requête globale sélectionne tous les champs, et par conséquent des champs inutile. Par exemple la page 3 à besoin uniquement du champ 3 pour fonctionner, et pourtant la requete globale sélectionne tous les champs. Donc en terme d'optimisation j'aimerais savoir si c'est pas mieux d'avoir une requete par page, qui sélectionne juste les champs dont la page a besoin, au lieu de tout prendre d'un coup avec une variable globale.
C'est tellement simple pourtant à comprendre.
Meeeeeeeeeeeuuuuuuuuuhhhh non c'est pas simple, depuis le début alors qu'on te conseille de ne faire qu'une requête tu nous dis que t'as besoin de deux requêtes, si t'as besoin que de la courte t'exécutes pas l'autre, et pi c'est tout ! Et là, c'est simple 
Re,
Si t'as besoin que d'un champ sur chaque page et donc que d'une requête pour l'affichage de ta page oui, par contre normalement si t'as besoin de la grosse qui te récupères tous les champs alors t'as plus besoin de la petite
Du moins ça c'est avec juste tes 2 requêtes comme infos
Si tu nous donnes les vraies (et surtout leurs "where and or") quelqu'un pourra peut-être t'aider plus facilement.
J'ai édité pour expliquer plus clairement mon point de vue
Ce que j'ai compris c'est que tu a mis $sql = Select * from table; et $sql1 = Select champ1 from table; dans deux fonctions que tu appelles depuis une page include
avec pour la page 1uniquement
et pour la page 2
Ces deux dernières requêtes peuvent tout aussi bien être unifiées dans la page include puisque quand tu appelles la fonction unifiée, tu peut mettre les valeurs que tu veux à la place de champ2 par exemple dans une fonction qui exécute la requête suivante
Cette fonction sera appelée par toutes les pages qui n'ont pas besoin de $sql et qui attribueront la valeur $champ.
@+
Si t'as besoin que d'un champ sur chaque page et donc que d'une requête pour l'affichage de ta page oui, par contre normalement si t'as besoin de la grosse qui te récupères tous les champs alors t'as plus besoin de la petite
Du moins ça c'est avec juste tes 2 requêtes comme infos
- Code: Tout sélectionner
$sql1 = Select champ1, champ2 from table;
$sql2 = Select champ3, champ8, champ10 from table;
Si tu nous donnes les vraies (et surtout leurs "where and or") quelqu'un pourra peut-être t'aider plus facilement.
J'ai édité pour expliquer plus clairement mon point de vue
Ce que j'ai compris c'est que tu a mis $sql = Select * from table; et $sql1 = Select champ1 from table; dans deux fonctions que tu appelles depuis une page include
avec pour la page 1uniquement
- Code: Tout sélectionner
$sql = Select * from table; (fonction dans page include)
et pour la page 2
- Code: Tout sélectionner
$sql1 = Select champ1 from table; (fonction dans page include)
et
$sql2 = Select champ2 from table; (fonction dans la page 2)
Ces deux dernières requêtes peuvent tout aussi bien être unifiées dans la page include puisque quand tu appelles la fonction unifiée, tu peut mettre les valeurs que tu veux à la place de champ2 par exemple dans une fonction qui exécute la requête suivante
- Code: Tout sélectionner
$sql1 = Select champ1, $champ from table; (fonction dans page include)
Cette fonction sera appelée par toutes les pages qui n'ont pas besoin de $sql et qui attribueront la valeur $champ.
@+
suite
Non tu as mal compris mon problème, c'est beaucoup plus simple que ca.
Oublis le début du post, et regarde uniquement ceci.
Exemple 1 (une seule requête principale) :
Page0.php :
Page1.php :
Page2.php :
-------------------------------------------------------------------
Exemple 2 (3 requêtes - une dans chaque page) :
Page0.php :
Page1.php :
Page2.php :
Je peux pas faire plus simple que ca.
Oublis le début du post, et regarde uniquement ceci.
Exemple 1 (une seule requête principale) :
Page0.php :
- Code: Tout sélectionner
$tablequery = doquery("SELECT * FROM {{table}} WHERE id='1' AND password='1'", "table");
$tablerow = mysql_fetch_assoc($userquery);
function fonction0() {
global $tablerow;
//Dans cette fonction on à besoin du champ1 de la table sql
}
Page1.php :
- Code: Tout sélectionner
include('page0.php');
function fonction1() {
global $tablerow;
//Dans cette fonction on à besoin du champ2 de la table sql
}
Page2.php :
- Code: Tout sélectionner
include('page0.php');
function fonction2() {
global $tablerow;
//Dans cette fonction on à besoin du champ3 de la table sql
}
-------------------------------------------------------------------
Exemple 2 (3 requêtes - une dans chaque page) :
Page0.php :
- Code: Tout sélectionner
$tablequery0 = doquery("SELECT champ1 FROM {{table}} WHERE id='1' AND password='1'", "table");
$tablerow0 = mysql_fetch_assoc($userquery0);
function fonction0() {
global $tablerow0;
//Dans cette fonction on à besoin du champ1 de la table sql
}
Page1.php :
- Code: Tout sélectionner
include('page0.php'); //J'inclus quand même la page pour des raisons technique, mais je me sers cette fois ci pas de la requête de la page0.php
$tablequery1 = doquery("SELECT champ2 FROM {{table}} WHERE id='1' AND password='1'", "table");
$tablerow1 = mysql_fetch_assoc($userquery1);
function fonction1() {
global $tablerow1;
//Dans cette fonction on à besoin du champ2 de la table sql
}
Page2.php :
- Code: Tout sélectionner
include('page0.php'); //J'inclus quand même la page pour des raisons technique, mais je me sers cette fois ci pas de la requête de la page0.php
$tablequery2 = doquery("SELECT champ3 FROM {{table}} WHERE id='1' AND password='1'", "table");
$tablerow2 = mysql_fetch_assoc($userquery2);
function fonction2() {
global $tablerow2;
//Dans cette fonction on à besoin du champ3 de la table sql
}
Je peux pas faire plus simple que ca.
Re,
Je visualise pas très bien mais je vais te donner ma vision, peut-être qu'elle s'adaptera à ce que tu veux faire.
Dans chaque page
Dans ta page que tu inclues dans toutes les autres.
Sinon comme précisé plus haut ton exemple 2 est plus léger mais tout dépend en fait du contenu des fonctions.
@+
Je visualise pas très bien mais je vais te donner ma vision, peut-être qu'elle s'adaptera à ce que tu veux faire.
Dans chaque page
- Code: Tout sélectionner
$champ = "$_GET"; //N° de champ récupéré depuis une variable par exemple
function fonction($champ) //appel de la fonction
Dans ta page que tu inclues dans toutes les autres.
- Code: Tout sélectionner
function fonction($champ) { //on récupère le nom du champ
$tablequery = doquery("SELECT $champ FROM {{table}} WHERE id='1' AND password='1'", "table"); //requete commune
$tablerow = mysql_fetch_assoc($userquery);
global $tablerow;
}
Sinon comme précisé plus haut ton exemple 2 est plus léger mais tout dépend en fait du contenu des fonctions.
@+
Je trouve l'exemple 1 plus léger, il y a une seule requête (plus lourde certes). Mais il est préférable de faire une requête que deux.
La solution de serval2a me semble quand même plus pratique et péreine. A voir si ça peut coller avec tes besoins.
La solution de serval2a me semble quand même plus pratique et péreine. A voir si ça peut coller avec tes besoins.
15 messages • Page 1 sur 1
Formation recommandée sur ce thème :
Formation Référencement naturel Google : apprenez une méthode efficace pour optimiser à fond le référencement naturel dans Google de façon durable... Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.
Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.
Lectures recommandées sur ce thème :
- Google API : guide de développement de l'API Google
- Nombre moyen de mots par requête : statistiques AOL Août 2006
- Nombre de clics dans les pages de résultats : statistiques AOL Août 2006
- AdSense Tracking : statistiques détaillées sur les clics AdSense
- Informations sur l'infrastructure technique de Google
- Yagoort : Yet Another Google Rank Test
- Google indexe le Flash
- Le marketing viral au service du référencement
- Constatations sur le PageRank de Google
- Complément à l'étude PageRank et backlinks
- Analyse des backlinks
Cet outil vous permet d'analyser en détails la "popularité" de votre site sur Google. En plus du nombre de liens pris en compte par Google, il calcule le pourcentage de liens internes parmi tous les liens, et il affiche les premières URL trouvées. - Calcul d'indice de densité
Cet outil vous permet de calculer l'indice de densité d'un mot-clé d'une page web. Il est calculé à la fois pour la balise TITLE, la balise META description et l'ensemble du texte de la page. - Détection de pages similaires
Cet outil vous permet de calculer la similarité entre 2 pages web. L'algorithme utilisé repose sur l'analyse des occurrences des mots (mais pas sur leur positionnement dans les pages). Google utilise cette notion à certains endroits dans son algorithme, mais de façon bien plus évoluée que ce petit outil... Avoir des pages trop similaires peut entraîner des problèmes d'indexation... Cet outil vous permettra peut-être de résoudre certains problèmes de contenus dupliqués.
Qui est en ligne
Utilisateurs parcourant ce forum: kilou27 et 0 invités




le forum