Hébergement du site en PHP et Mysql par WDMédia-hébergement
Vous aussi adpotez les éléPHPants de Vincent Pontier !  
CONCOURS
 
 
PLUS DE PHP
 
 
PLUS DE JAVASCRIPT
 
COMMENT CA MARCHE
 
 
EXPLIQUE-MOI
 
 
NEWS LETTER
 

 
PARTENAIRES
 
Découvrez scriptsphp.org
Découvrez phpteam.net
Tout sur les expressions régulières
IE sucks :-)
 
DESIGN DU SITE
 
La guerre des étoiles

Dans bien trop de développements, on peut voir apparaître des requêtes avec le sélecteur de champs générique "*" (étoile). Seulement, c'est une très mauvaise habitude que de faire des "SELECT *" dans tous les sens.

Pourquoi, c'est plus court à écrire, non ?

Oui, en effet, mais c'est aussi mauvais pour les performances de votre application. J'explique :

Lorsque vous effectuez une requête sur votre serveur de données, le résultat va transiter sur votre réseau (ou en mémoire partagée). Si votre table contient un grand nombre de champs, ceux-ci vont être transmis à votre application alors qu'ils ne seront pas tous utilisés. Et plus la quantité de données qui transite est importante, plus votre système mettra de temps à répondre.

Cela revient à remplir son chariot de tous les produits du magasin, pour laisser à la caisse ceux dont on n'a pas besoin et payer les autres. Remplir votre chariot risque de vous prendre beaucoup de temps, sans parler de la difficulé à le faire rouler.

Oui, bon, je veux bien, mais quand j'ai vraiment besoin de tous les champs ?

Prenons alors le cas suivant :

Vous avez une table listant tous vos membres (nom, prénom). Sur une page, vous affichez la liste de vos membres en utilisant un "SELECT *". Quelques temps plus tard vous proposez à vos utilisateurs un système d'alerte par SMS. Pour cela, vous allez ajouter un champ téléphone sur 10 caractères. Désormais on en revient au point précédent, c'est à dire que lors de l'affichage des membres, vous n'utilisez pas le numéro de téléphone (heureusement) et vous faites donc transiter des données qui ne seront pas utilisées. Imaginez que vous avez 500 membres, la quantité de données inutiles sera donc de 5.000 octets. En multipliant ça par le nombre de requêtes/jour, cela peut représenter un gâchis important.

Pour certaines tables, je suis certain de ne pas évoluer !

Là arrive pour moi le réel argument allant contre l'utilisation du "SELECT *" ! Ce n'est pas trop une question d'évolutivité ou de performance, mais plutôt une question de lisibilité et de rigueur. En effet, lorsque vous relisez un code contenant un "SELECT *", à moins de connaître par coeur la structure de votre table, vous êtes dans l'incapacité de savoir ce que retourne la requête. Indiquez les champs que vous utilisez, c'est garantir que votre code reste lisible et donc maintenable par les autres, et aussi par vous-même.
Ecrire "SELECT *" est synonyme pour moi de "Je suis faignant, je ne sais pas trop ce qu'il y a dedans, et de toute façon, on s'en fout !"

La guerre des étoiles commence, et l'empire de la rigueur contre attaque !


Revenir aux mises au point



Ajouter une réponse
Nom
Email
Titre

Mise en forme : gras = [b]...[/b], italic = [i]...[/i], souligné = [u]...[/u], citation = [quote]...[/quote], lien = [url]liens_externe[/url] ou [url nom=texte]liens_externe[/url], code source : [code]...[/code]

Mémoriser mon nom et mon email : Oui Non
www.phpdebutant.org © 2017 - L'équipe de phpDebutant - Hébergement : WDMédia-hébergement
DEBUTEZ !
 
  0.  Introduction
  1.  Afficher une phrase ou une image
  2.  Afficher la date et l'heure
  3.  PHP dans du code HTML
  4.  La concaténation
  5.  Récupérer les valeurs d'un formulaire
  6.  Les structures de contrôle
  7.  Ecrire et lire dans un fichier texte
  8.  Les fonctions utilisateurs
  9.  Les variables d'environnement
  10.  Quelques fonctions utiles
  11.  SQL/MySQL (Create, Alter & Drop)
  12.  SQL/MySQL (Insert et Select)
  13.  SQL/MySQL (Delete et Update)
  14.  SQL/MySQL (Where)
  15.  Fonctions PHP pour mySQL
  16.  Interroger une table MySQL
  17.  Alimenter une ou plusieurs tables mySQL
  18.  Les pseudos-frames
  19.  Les sessions php4
  20.  Affichage page par page
  21.  Images dynamiques
  22.  Ca marche pas ?
  23.  Variables globales à OFF
  24.  Les variables dynamiques