IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage SQL Discussion :

Noms de champs explicites ou pas


Sujet :

Langage SQL

  1. #1
    Membre à l'essai
    Homme Profil pro
    Programmeur
    Inscrit en
    Octobre 2012
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Programmeur

    Informations forums :
    Inscription : Octobre 2012
    Messages : 24
    Points : 20
    Points
    20
    Par défaut Noms de champs explicites ou pas
    Bonjour,

    Quelqu'un s'est-il amusé a déterminer si une requête avec 2 ou 3 jointures
    et 3 ou 4 fois 50 champs (3 ou 4 tables)
    basée sur un MCD dont les noms de champs sont court

    PR au lieu de PRENOM
    DTN au lieu de DATE_DE_NAISSANCE
    etc ...

    rendait ses résultats plus rapidement sur un moteur SGBDR donné ?

    Normalement oui, mais quel est le gain ?

    A bientôt

  2. #2
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 453
    Points : 18 394
    Points
    18 394
    Par défaut
    Le gain est / serait insignifiant.

    La requête étant plus courte elle est transmise plus rapidement au serveur - ce qu'on peut éviter en utilisant des vues et/ou des procédures stockées - et la requête sera analysée plus vite par le SGBD.

    Je ne pense pas que ce soit vraiment mesurable, surtout dès lors que vous avez des accès disques qui rentrent dans la danse.

  3. #3
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 917
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 917
    Points : 51 693
    Points
    51 693
    Billets dans le blog
    6
    Par défaut
    Quasiment aucune incidence. C'est le genre de chose débile !
    En effet, une requête est transmise dans un paquet qui fait en général 2 Ko.
    Que tu y mette des noms court ou long, ce sera toujours 2 ko de chaine de caractères.....
    Une fois dans le moteur, les noms sont changés en id donc longs ou courts ils occupent la même place !
    Conclusion c'est du masochisme pur !

    A +

  4. #4
    Membre à l'essai
    Homme Profil pro
    Programmeur
    Inscrit en
    Octobre 2012
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Programmeur

    Informations forums :
    Inscription : Octobre 2012
    Messages : 24
    Points : 20
    Points
    20
    Par défaut
    Citation Envoyé par SQLpro Voir le message
    ...
    Une fois dans le moteur, les noms sont changés en id ...
    C'est de çà dont je voulais parler,

    mais je n'ai pas été moi-même assez clair

    Dans mon exemple ça donne 4*50 comparaisons de chaines (de disons 15 caractères, dans le cas de champs explicites) soit :
    3000 comparaisons de caractères

    contre

    600 comparaisons de caractères dans le cas de champs abrégés

    pour une requête.

    Peut-être cela peut avoir une incidence mesurable, si on envoie une série de 10 requêtes de ce style, pour par exemple charger un plan de paye.

    Mais c'est sur qu'entre les accès réseau(client->serveur) puis les accès disque(serveur) et a nouveau les accès réseau(serveur->client), le gain ne doit pas être transcendant.

    Je me pose cette question parce qu'en fait j'ai travaillé chez un éditeur d'ERP, et J'ai bien vu la consommation en termes de volumes de bases de données
    ou la lourdeur des traitements.

    A+

  5. #5
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 917
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 917
    Points : 51 693
    Points
    51 693
    Billets dans le blog
    6
    Par défaut
    Citation Envoyé par Pypiou Voir le message
    C'est de çà dont je voulais parler,

    mais je n'ai pas été moi-même assez clair

    Dans mon exemple ça donne 4*50 comparaisons de chaines (de disons 15 caractères, dans le cas de champs explicites) soit :
    3000 comparaisons de caractères

    contre

    600 comparaisons de caractères dans le cas de champs abrégés

    pour une requête.

    Peut-être cela peut avoir une incidence mesurable, si on envoie une série de 10 requêtes de ce style, pour par exemple charger un plan de paye.

    Mais c'est sur qu'entre les accès réseau(client->serveur) puis les accès disque(serveur) et a nouveau les accès réseau(serveur->client), le gain ne doit pas être transcendant.

    Je me pose cette question parce qu'en fait j'ai travaillé chez un éditeur d'ERP, et J'ai bien vu la consommation en termes de volumes de bases de données
    ou la lourdeur des traitements.

    A+
    L'algorithme de Knuth Moris Pratt de comparaison de chaine de caractère vous donnera des vitesses bien supérieure et un nombre bien moindre de comparaison. L'écart final sera très faible.
    De plus si la requêtes est déjà en cache et dans 98% des cas c'est probable, alors la traduction est instantanée, car la recherche est effectuées sur un hachage globale de la requête et non élément par élément.

    A +

Discussions similaires

  1. Réponses: 2
    Dernier message: 22/02/2013, 17h12
  2. [2.x] [FOSUserBundle] nom des champs ne sont pas en français
    Par montis dans le forum Symfony
    Réponses: 1
    Dernier message: 27/09/2012, 16h05
  3. Réponses: 7
    Dernier message: 14/06/2012, 10h34
  4. Réponses: 0
    Dernier message: 15/06/2010, 16h29
  5. [PL/SQL) Curseur et nom de champ explicite
    Par Loko dans le forum Oracle
    Réponses: 6
    Dernier message: 01/12/2004, 15h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo