8791 sujets

Développement web côté serveur, CMS

Bonjour, je me pose une question concernant l'optimisation de mes pages php, au niveau des requêtes sql. Faut-il avoir une seule et unique requête principale qui sélectionne tous les champs d'un coup (exemple1), ou plutôt avoir plusieurs requête (une par page) et sélectionner uniquement les champs nécessaire (exemple2).

Merci à ceux qui pourront m'éclairer.

Exemple 1 (une seule requête principale) :

Page0.php :

$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 :


include('page0.php');

function fonction1() {

global $tablerow;

//Dans cette fonction on à besoin du champ2 de la table sql

}



Page2.php :


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 :


$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 :



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 :



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

}

Modifié par sff (12 Nov 2008 - 23:26)
Salut,

quand c'est possible il vaut mieux faire le moins d'accès possible à la BDD donc la première solution est la meilleure.

Pour être plus précis il vaudrait mieux :
$tablequery = doquery("SELECT [b]champ1, champ2, champ3[/b] FROM {{table}} WHERE id='1' AND password='1'", "table");

Modifié par Heyoan (13 Nov 2008 - 00:26)