L'essence de la citation de ne pas prématurément l'optimisation est d'aller pour la simple et directe de code et ensuite utiliser un profiler de souligner les points chauds, qui vous permet ensuite d'optimiser son efficacité.
Lorsque vous utilisez select * vous êtes à la rendre impossible le profil, donc vous n'êtes pas à la rédaction claire et simple code et vous allez à l'encontre de l'esprit de la citation. select *
est un anti-pattern.
Afin de sélectionner des colonnes n'est pas une optimisation prématurée. Quelques choses du haut de ma tête ....
- Si vous spécifiez les colonnes dans une instruction SQL, SQL moteur d'exécution de l'erreur si cette colonne est supprimée de la table et la requête est exécutée.
- Vous pouvez analyser plus facilement le code lorsque cette colonne est utilisée.
- Vous devriez toujours écrire des requêtes de ramener le moins d'informations.
- Comme d'autres mentionnent si vous utilisez ordinal l'accès à la colonne que vous ne devez jamais utiliser select *
- Si votre instruction SQL joint des tables, sélectionnez * vous donne toutes les colonnes de toutes les tables de la jointure
Le corollaire est que l'utilisation d' select *
...
- Les colonnes utilisées par l'application est opaque
- DBA et de leur requête, les profileurs sont pas en mesure d'aider votre application à la mauvaise performance
- Le code est plus fragile quand des changements se produisent
- Votre base de données et du réseau sont en souffrance parce qu'ils sont de ramener trop de données (I/O)
- Moteur de base de données optimisations sont minimes, car vous êtes de ramener toutes les données indépendamment (logique).
L'écriture correcte de SQL est tout aussi simple que la rédaction d' Select *
. Donc, la personne paresseuse écrit SQL correcte parce qu'ils ne veulent pas revoir le code et essayer de se rappeler ce qu'ils ont fait quand ils l'ont fait. Ils ne veulent pas expliquer pour le DBA sur tous les bits de code. Ils ne veulent pas expliquer à leurs clients pourquoi l'application s'exécute, comme un chien.