JeuWeb - Crée ton jeu par navigateur
[Résolu][SQL] Différences entre * et l'énumération des champs - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : [Résolu][SQL] Différences entre * et l'énumération des champs (/showthread.php?tid=887)



[Résolu][SQL] Différences entre * et l'énumération des champs - desgui - 01-03-2007

Voici un simple exemble d'une requête :

SELECT id FROM connect ORDER BY id ASC

Par contre, si ma table à, disons 25 champs, et que j'ai besion des 25 champs, il devient long d'écrire tous les champs dans la requête. Je peux alors utilisé le symbole *.

Qu'elle est la différence entre les deux méthodes ?
Y'a une métohde meilleure que l'autre ? Et dans quel cas ?


RE: SQL - genosite - 01-03-2007

Dans la première tu sélectionne que le champ id alors que dans la deuxième tu sélectionne tout les champ.

après sa dépens de se que tu veut faire

Citation :SELECT * FROM connect ORDER BY id ASC
Selectionne tout les champs de la table "connect" dans lordre id



RE: SQL - desgui - 01-03-2007

Je sais ça, mais supossons que j'ai 25 champs dans la table, est-il préférable de tout les écrire, ou de mettre * ?


RE: SQL - Plume - 01-03-2007

Je suis pas certain de comprendre la question, car je ne vois pas 2 méthodes différentes. Cependant, si tu es absolument sûr d'avoir besoin de tous les champs, alors tu peux employer `*`, ça ne pose aucun problème - à ma maigre connaissance. Par contre, à partir du moment où tu n'a pas besoin de tous les champs, alors là, privilégie le listing des champs nécessaires. Ca évite de prendre des données inutiles.

J'espère ne pas avoir tourner autour du pot sans y répondre ^^


RE: SQL - desgui - 01-03-2007

Merci pour la réponse.

Je relis ma question, et je remarque que c'est vrai qu'elle n'était pas très clair.


RE: [régler] SQL - Plume - 01-03-2007

En fait, c'est juste la première car tu m'as un peu grilled sur le deuxième que tu as posté ^^ Qui soit dit en passant était déjà bien plus clair.

Content de t'avoir aidé Smile

Tchu !


RE: [régler] SQL - denisc - 01-03-2007

Je veux pas vous casser la baraque, mais, même si c'est vrai que le * peut être employé, il serai préférable de mettre la liste des champs pour plusieurs raisons...
1. Ils seront facilement lisibles dans ton code
2. Ils seront plus rapidement triés dans tes order by
3. Tu peux les récupérer dans l'ordre que tu désire, même s'ils ne sont pas rangés comme tu le voudrai dans ta BD
4. Ca ira plus vite à interpréter pour le SQL (explication : lorsque tu met *, l'interpréteur SQL fait dabord une requête dans la table système regroupant les tables pour récupérer la liste des champs, puis elle remplace le * par cette liste, et enfin elle effectue la requête que tu as demandée).

Si tu utilises d'autres applications, telles que MSSQL par exemple, tu notera que quand tu crée des vues de tables, il remplace automatiquement les * par la liste des champs. C'est de l'optimisation de code Wink

Maintenant, la différence est suffisemment faible en terme de temps pour s'en passer... Mais si tu fait ça sur une boucle, alors il est préférable d'optimiser.


RE: [régler] SQL - Plume - 02-03-2007

Une requête dans une boucle ?!


RE: [régler] SQL - denisc - 03-03-2007

bin oui, déjà vu!