2010-04-05 4 views

Répondre

14

Oui, vous pouvez effectuer les opérations suivantes:

SELECT t1.*, t2.my_col FROM table1 AS T1 INNER JOIN table2 AS T2 ON T1.ID = T2.ID 
+0

Merci pour votre réponse! –

-1

utilisation table1.* en place de toutes les colonnes de table1;)

4

Même si vous pouvez faire la chose t1.*, t2.col1, je ne le recommanderais pas dans la production code.

Je voudrais jamais utiliser un SELECT * dans la production - pourquoi?

  • vous dire SQL Server pour obtenir toutes les colonnes - avez-vous vraiment, vraiment besoin tous? En ne spécifiant pas les noms des colonnes, SQL Server doit aller chercher lui-même - il doit consulter le dictionnaire de données pour savoir quelles colonnes sont présentes ce qui coûte un peu de performance
  • le plus important: vous don Je ne sais pas ce que vous obtenez. Soudainement, la table change, une autre colonne ou deux sont ajoutées. Si vous avez un code qui repose par exemple sur la séquence ou le nombre de colonnes dans la table sans vérifier explicitement que votre code peut freiner

Ma recommandation pour le code de production: toujours spécifier exactement les colonnes que vous avez vraiment besoin - et même (sans exception!) Si vous avez besoin de tous, expliquez-le explicitement. Moins de surprises, moins de bugs à chasser, si quelque chose change jamais dans la table sous-jacente.

+1

Hmm, OK, j'ai une table ** table1 **. Il contient 10 colonnes. Quelle instruction SELECT sera la plus rapide? 1. SELECT * FROM TABLE1 2. SÉLECTIONNER COL1, COL2/* JUSQU'À DIX */FROM TABLE1 Et qui sera le plus compréhensible? –

+1

Celui qui énonce explicitement les 10 colonnes sera à la fois plus rapide et plus compréhensible. –

+1

Pourquoi la liste explicite des colonnes sera-t-elle plus rapide? – amwinter

Questions connexes