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

Outils MySQL Discussion :

De la pertinence de l'utilisation de "using"


Sujet :

Outils MySQL

  1. #1
    Membre confirmé Avatar de Christophe Charron
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    920
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 920
    Points : 606
    Points
    606
    Par défaut De la pertinence de l'utilisation de "using"
    Bonjour,
    je suis en train de basculer des requêtes version 4.1 en vue version 5. J'essaie d'en profiter pour en rendre certaines plus lisibles mais j'ai un doute sur l'utilisation du mot "USING" dans les requêtes du type suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SELECT 'BA' as _table,LA08.BM_CLEUNIK,BA.BA_CLEUNIK,BA_0000_01,BA_0001_00,
    BE_0001_00
     FROM BA,BE,LA08 WHERE LA08.BA_CLEUNIK = BA.BA_CLEUNIK 
    AND BA.BE_CLEUNIK =BE.BE_CLEUNIK
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    create view v_00001 as 
    SELECT 'BA' as _table,LA08.BM_CLEUNIK,BA.BA_CLEUNIK,BA_0000_01,BA_0001_00,
    BE_0001_00
     FROM LA08 LEFT JOIN BA USING (BA_CLEUNIK) LEFT JOIN BE USING (BE_CLEUNIK)
    car lorsque je récupère via Mysql Query Browser la requête de création j'obtiens cela
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    DROP VIEW IF EXISTS `base_test_01`.`v_00001`;
    CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY
     DEFINER VIEW  `base_test_01`.`v_00001` 
    AS select _utf8'BA' AS `_table`,`la08`.`BM_CLEUNIK` AS `BM_CLEUNIK`,
    `ba`.`BA_CLEUNIK` AS `BA_CLEUNIK`,
    `ba`.`BA_0000_01` AS `BA_0000_01`,
    `ba`.`BA_0001_00` AS `BA_0001_00`,
    `be`.`BE_0001_00` AS `BE_0001_00` 
    from ((`la08` left join 
    `ba` on((`la08`.`BA_CLEUNIK` = `ba`.`BA_CLEUNIK`))) 
    left join `be` on((`ba`.`BE_CLEUNIK` = `be`.`BE_CLEUNIK`)));
    ce qui me semble, je dois l'avouer, un peu plus abscons que ma syntaxe et lorsque je récupére via phpMyAdmin la requête de création, je récupère ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY
     DEFINER VIEW `v_00001` AS 
    select _utf8'BA' AS `_table`,`la08`.
    `BM_CLEUNIK` AS `BM_CLEUNIK`,
    `ba`.`BA_CLEUNIK` AS `BA_CLEUNIK`,
    `ba`.`BA_0000_01` AS `BA_0000_01`,
    `ba`.`BA_0001_00` AS
     `BA_0001_00`,`be`.`BE_0001_00` AS `BE_0001_00` 
    from ((`la08` left join `ba` on((`la08`.`BA_CLEUNIK` = `ba`.`BA_CLEUNIK`))) 
    left join `be` 
    on((`ba`.`BE_CLEUNIK` = `be`.`BE_CLEUNIK`)));
    ce qui n'est, pour moi, pas plus clair !!

    De plus, qu'est ce que ce
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CREATE ALGORITHM=UNDEFINED
    , google n'étant pas très prolixe ...
    D'avance merci pour vos lumières.
    Cordialement,
    Christophe Charron

  2. #2
    Membre émérite Avatar de Maximil ian
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 622
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 622
    Points : 2 973
    Points
    2 973
    Par défaut
    Le "ON ((`la08`.`BA_CLEUNIK` = `ba`.`BA_CLEUNIK`))" équivaut à USING BA_CLEUNIK.

    Quant au ALGORITHM=UNDEFINED, cela signifie que tu n'as pas spécifié MERGE ou TEMPTABLE comme algorithme pour cette vue. Pour en savoir plus, consulte la doc.
    Pensez au bouton

  3. #3
    Membre confirmé Avatar de Christophe Charron
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    920
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 920
    Points : 606
    Points
    606
    Par défaut
    Bonjour,
    Citation Envoyé par Maximilian
    Le "ON ((`la08`.`BA_CLEUNIK` = `ba`.`BA_CLEUNIK`))" équivaut à USING BA_CLEUNIK.
    çà, j'avais intuité, car c'est justement ce que je remplace par le using que je trouve plus "parlant". Le véritable sens de la question était : "Est-ce bien standard d'utiliser ce "using" ?
    Quant au ALGORITHM=UNDEFINED, cela signifie que tu n'as pas spécifié MERGE ou TEMPTABLE comme algorithme pour cette vue. Pour en savoir plus, consulte la doc.
    On peut pas dire que la doc française s'étende sur les paramètres !! Par contre, la doc anglaise en dit un peu plus, et j'aurais tendance à dire que dans mon cas de lecture unidirectionnelle sans lock ni opération extravagante comme des updates ou des delete sur cette vue, l'option "TEMPTABLE" serait plus judicieuse que l'option "MERGE" ... non ?
    Cordialement,
    Christophe Charron

  4. #4
    Membre émérite Avatar de Maximil ian
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 622
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 622
    Points : 2 973
    Points
    2 973
    Par défaut
    Citation Envoyé par Christophe Charron
    Le véritable sens de la question était : "Est-ce bien standard d'utiliser ce "using" ?
    Comme ça c'est plus clair
    Un petit extrait de la doc :
    Beginning with MySQL 5.0.12, natural joins and joins with USING, including outer join variants, are processed according to the SQL:2003 standard. The goal was to align the syntax and semantics of MySQL with respect to NATURAL JOIN and JOIN ... USING according to SQL:2003
    Citation Envoyé par Christophe Charron
    On peut pas dire que la doc française s'étende sur les paramètres !! Par contre, la doc anglaise en dit un peu plus, et j'aurais tendance à dire que dans mon cas de lecture unidirectionnelle sans lock ni opération extravagante comme des updates ou des delete sur cette vue, l'option "TEMPTABLE" serait plus judicieuse que l'option "MERGE" ... non ?
    Ca dépend, le problème c'est que TEMPTABLE est incapable de tirer parti des index donc ça peut être gênant...
    Pensez au bouton

  5. #5
    Membre confirmé Avatar de Christophe Charron
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    920
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 920
    Points : 606
    Points
    606
    Par défaut
    Citation Envoyé par Maximilian
    Comme ça c'est plus clair
    Un petit extrait de la doc :
    C'est qu'il m'avait semblé lire ... mais ils sont joueurs alors de transformer ma syntaxe tip top aux avant postes de la norme en phrase antédiluvienne dont personne ne veut plus !! Au passage, faudrait m'expliquer la logique de déjà se conformer au SQL:2003 alors que le but est encore d'atteindre le total nirvana ansi 92/ansi 99
    Citation Envoyé par Maximilian
    Ca dépend, le problème c'est que TEMPTABLE est incapable de tirer parti des index donc ça peut être gênant...
    Donc dans le doute, je vais m'abstenir ...
    Cordialement,
    Christophe Charron

  6. #6
    Membre éprouvé
    Avatar de Biglo
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    537
    Détails du profil
    Informations personnelles :
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Juillet 2002
    Messages : 537
    Points : 984
    Points
    984
    Par défaut
    Citation Envoyé par Christophe Charron
    Au passage, faudrait m'expliquer la logique de déjà se conformer au SQL:2003 alors que le but est encore d'atteindre le total nirvana ansi 92/ansi 99
    Il reste en effet beaucoup de boulot pour atteindre le respect des anciennes normes. Mais transformer un USING en "ON ... = ..." est quand même très rapide à faire. Alors que d'autres fonctionnalités manquantes nécessitent sûrement de restructurer une bonne partie du code source, sans que cela ne crée un conflit avec l'existant.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 27/11/2006, 18h00

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