2012-03-20 1 views
0

Pendant un certain temps j'avais toujours mes questions sur une seule ligne:Quelle est la manière recommandée d'écrire correctement des requêtes MySQL pour améliorer la lisibilité?

SELECT * FROM table WHERE col = value ORDER BY id DESC 

Maintenant que j'ai dit à plusieurs reprises de ne pas utiliser *, j'ai essayé de trouver un moyen de rendre plus lisibles les requêtes. Jusqu'à présent, j'ai quelque chose comme ceci:

SELECT table.id, 
     table.type, 
     table.name 

FROM table 

WHERE table.id > $lastId 
AND table.type = $type 

ORDER BY table.id ASC 

Cela semble bien, mais y at-il des meilleures pratiques autour que je devrais avoir un coup d'oeil?

Mes trucs MySQL sont faits dans le contexte de PHP.

+0

si vous êtes le seul affichage du code, ce qui est son meilleur pour vous. –

+0

la raison de ne pas utiliser aveuglément '*' n'est pas liée à la lisibilité mais vous saviez déjà que –

+0

Heureux pour cela d'être fermé, même si je suis curieux de l'existence de la balise [tag: code-lisibilité] et similaires sont hors sujet .. – Marty

Répondre

2

je l'ai ainsi:

SELECT 
    t.id,    //indent fields to pick out 
    t.type, 
    t.name 
FROM 
    table t    //shorter alias (but alias wisely) 
WHERE 
    t.id > $lastId  //indent conditions 
    AND t.type = $type 
ORDER BY 
    t.id ASC   //indent order parameters 
+0

Il est toujours préférable de toujours utiliser "AS" pour les alias - c'est du sucre syntaxique, mais cela facilite la lisibilité. –

2

Tout se résume à ce qui est lisible pour vous, mais il doit aussi être clair pour les autres lecteurs.

Personnellement, je fais ceci:

SELECT 
    table.id, 
    table.type, 
    table.name 
FROM table 
WHERE table.id > $lastId 
    AND table.type = $type 
ORDER BY table.id ASC 

Ce qui est facile à lire comme votre exemple. En résumé:

  • Rendez votre SQL lisible pour que les autres utilisateurs de votre code sachent ce qui se passe, mais;
  • Utilisez un style avec lequel vous êtes à l'aise et que vous aimez utiliser.
Questions connexes