Afficher des valeurs qui ne sont pas dans un groupe - SQL/NoSQL - Programmation
Marsh Posté le 17-06-2010 à 18:35:08
Je propose:
SELECT * |
Marsh Posté le 18-06-2010 à 07:49:37
Il y a ca aussi:
Code :
|
Marsh Posté le 18-06-2010 à 08:35:28
J'en profile pour rappeler l'importance d'utiliser les Join.
Si la query tourne sur une petite table de 8 records ca ne change rien, mais j'ai fais le test sur un table de 10Mil rows:
Code :
|
Code :
|
On passe de 12sec a 20mins (sur un quad core)
Marsh Posté le 18-06-2010 à 10:34:08
Tiens ca c'est intéressant, en plus j'avoue que j'avais jamais pensé à utiliser une comparaison directe à une constante directement dans un join. La requete est moins intuitive mais effectivement j'comprends pourquoi ca va beaucoup plus vite (de toute facons si j'me souviens bien, IN et NOT IN c'est genre LE truc à éviter). Merci pour le "truc".
Marsh Posté le 18-06-2010 à 19:33:52
Si la modélisation est bien concue et performante (index, pk ...), je ne vois pas pourquoi un IN et NOT IN est à éviter ... Cela fonctionne très bien
Marsh Posté le 18-06-2010 à 23:20:41
Le DBA de mon ancien job: "IN faut éviter, utilises un truc avec EXISTS plutot".
Le DBA de mon job actuel: "IN c'est pas bien, évites ca si t'as beaucoup de donées en jeu".
Et en plus il y a une limite de taille pour le second opérateur du IN, et je l'ai déjà tapée en situation réelle.
Donc j'dis pas que c'est forcément vrai, mais bon deux DBA qui me disent d'éviter, je les crois et je cherche pas trop à approfondir (ils sont OCP tous les deux).
Marsh Posté le 19-06-2010 à 16:39:56
Salut à tous
Merci beaucoup pour vos réponses. Je ne pensais pas que les Join ont un tel importance dans le temps d'exécution d'une requête. Je me suis donc orienter vers la méthode d'Oliii car mes tables contiennent beaucoup de données.
En tout cas je vous remercie à tous pour votre aide et les explications. Super
A+
Marsh Posté le 17-06-2010 à 17:17:46
Bonjour à tous,
J'ai un problème que je n'arrive pas à résoudre en sql sous access. J'ai une table qui se structure de la façon suivante :
Table Stock :
Type | numero |
----------------
DNA | 30 |
Lym | 30 |
DNA | 10 |
Lym | 15 |
DNA | 40 |
Lym | 40 |
DNA | 19 |
Lym | 20 |
En fait, les valeurs {DNA, Lym} qui ont le même numéro forme un groupe. Ce que je voudrais faire c'est afficher tous les DNA qui ont un numéro différent du Lym.
J'ai essayé deux choses, la première :
En gros ça me retourne rien.
Du coup, j'ai copié toutes les valeurs DNA de la table Stock dans une autre table que j'ai nommé Stock_temp. Ensuite, j'ai essayé la chose suivante :
Ca me retourne une liste énorme qui est incorrecte. Est ce que quelqu'un pourrait m'aider, svp ?
Merci.