Avantages et inconvénients du sélecteur étoile en SQL

Dans une requête SQL, le caractère étoile permet de lire tous les champs d’une base de données. Il est très pratique lorsqu’il faut connaître facilement et rapidement toutes les colonnes d’une table sans avoir à lister soi-même le nom des champs désirés. Cet article résume les avantages mais aussi les inconvénients de ce sélecteur.

Utilisation

Son utilisation est simple et c’est justement ça qui fait sa force. Pour lire toutes les données de la table « mon_tableau » il faut effectuer la requête suivante:

SELECT * FROM mon_tableau

Avantages du caractère étoile

Ce caractère peut lister toutes les colonnes sans avoir besoin de connaître leurs noms. C’est très pratique pendant une phase de tests ou de débug pour voir ce que contient un tableau rapidement et facilement.

Une requête utilisant ce caractère à moins de chance d’échouer si les tables évolues. Puisque les noms des champs ne sont pas spécifiés dans la sélection, la requête continuera de fonctionner si un nom de champ est modifié ou si une colonne est supprimée. A l’inverse, une requête qui spécifie la lecture des champs « nom » et « ville » échouera si le champ « ville » est remplacé par le champ « code_postal ».

Inconvénients du caractère étoile

Bien que ce caractère semble magique pour les débutants, il y a tout de même des inconvénients pour l’utiliser dans une application. Son utilisant implique que le système de gestion de base de données retourne toutes les colonnes. Or, si une application désire seulement le prénom et le nom du client, il est inutile de lire d’autres données telles que la ville, le nombre d’achat …

Utilisé à mauvais escient, le caractère étoile peut avoir de mauvaises conséquences sur les performances d’une application. Pour optimiser les performances, il convient de lire seulement les données qui seront utilisées par l’application.

Par ailleurs, lorsque le sélecteur étoile est utilisé, les colonnes sont retournées dans le même ordre qu’elles sont présentes en base. Si une application utilise le champ étoile et qu’elle lit les informations en fonction de l’ordre dans lequel les colonnes sont retournées, il y aura une grosse erreur si la base de données est modifiée (modification d’un champ, modification de l’ordre des champs …).

Ne pas utiliser le sélecteur étoile dans une application

Malgré les avantages présentés, la bonne pratique consiste à ne pas utiliser ce caractère dans une application. Il a été précisé qu’une requête est plus évolutive en utilisant ce caractère dans le cas où des champs sont modifiés. Mais en réalité, une application doit être adaptée s’il y a un gros changement dans la base de données.

Ce caractère doit par conséquent être réservé à un usage ponctuel lorsqu’un développeur souhaite lire rapidement le contenu d’une base.

Ce contenu a été publié dans Bonnes pratiques.

A propos de l'auteur : Tony Archambeau

Fort de plusieurs années d’expérience dans le développement web, Tony partage ses connaissances sur des projets divers dont le site infowebmaster.fr.
Il est possible de le suivre sur Twitter.

Partager

6 réflexions au sujet de « Avantages et inconvénients du sélecteur étoile en SQL »

  1. Alexandre dit :

    Salutations !

    J’ai un partiel de SQL qui arrive et votre site est bien foutu, c’est agréable de lire de bons cours, clairs et concis sur le sujet (à côté des pdf abominables que l’on connait aux dev et aux marketers …)

    En revanche, grammar nazi comme je suis, il est parfois dur de comprendre le sens d’une phrase à cause des fautes d’orthographes/grammaire, faites un effort dessus et ce sera parfait :-)

    Bien à vous ;)

  2. Tony Archambeau dit :

    @Alexandre : merci pour votre message. J’évite les erreurs autant que faire se peut, mais il y en a toujours qui échappe à ma vigilance. N’hésitez pas à m’envoyer un message (cf. http://sql.sh/contact ) pour m’indiquer d’éventuelles coquilles. :)

  3. mallem dit :

    Très bien fait, clair, net, concise…BRAVO.

  4. ettarak dit :

    bien fait , bonne continuation

  5. SilentBob dit :

    Bonjour,

    Merci pour ce résumé. J’ajouterai que l’utilisation du caractere * oblige le moteur sql a faire une requete implicite supplementaire sur la table des schema pour retrouver le nom des colonnes. C’est quelques ms de plus dans le temps d’execution :)

  6. Didier dit :

    Merci pour ce cours sur SQL qui m’est très utile dans ma recherche d’emploi.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *