Bonjour à tous,
Je suis actuellement en train de développer mon site internet (PHP orienté objet), cependant je me pose une question sur l'optimisation de quelques requêtes...
En effet, j'ai conçu le système pour qu'une table dans ma base de données = une class PHP (ou presque toujours). Et tous les attributs d'une classe = champs de la table en question. Toutes mes classes PHP extends une classe Model.
Cette classe est capable d'exécuter des requêtes sur les différentes tables en fonction de la classe utilisée.
Je m'explique, je veux obtenir un membre dont je connais l'email (par exemple), alors je fais :
$membre = Membre::find(array('email'=>$email));
Et là j'ai bien mon objet membre chargé avec toutes les infos nécessaire.
Cependant dans ma méthode find() j'utilise le sélecteur "a.*".
Exemple concret :
SELECT a.* FROM membre AS a WHERE email = $email
Je sais que ce n'est pas terrible alors voici une solution alternative que j'ai en tête :
- parcourir tous les attributs de l'objet puis former ma requête en fonction des attributs :
Exemple concret :
SELECT a.id, a.email, etc... FROM membre AS a WHERE email = $email
Pour vous, quelle est la meilleur solution niveau performance ? D'un côté pas de traitement PHP mais un *, d'un autre côté un traitement PHP mais au moins on ne fait pas de *
J'ai lu que le * faisait en fait 2 requêtes, est-ce vrai ?
Merci d'avance pour votre aide et/ou vos conseils !
Partager