|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Futur Membre du Club
![]() Développeur Web Inscription : novembre 2007 Messages : 185 ![]() |
Bonjour à tous ,
Quelqu'un pourrait-il me dire combien peut-on passer au maximum de valeur dans l'instruction IN / NOT IN ? Merci d'avance pour votre aide. |
|
|
00
|
|
|
#2 | ||
|
Membre confirmé
![]() Grégoire MARTINIngénieur développement logiciels Inscription : janvier 2011 Messages : 128 ![]() |
1000 il me semble.
Au delà il faut decouper : Code :
__________________
Cordialement. |
||
|
|
00
|
|
|
#3 |
|
Membre émérite
![]() Olivier DehorterIngenieur de recherche - Ecologue Inscription : juin 2003 Messages : 697 ![]() |
Cela devrait être une caractéristique propre à chaque SGBD, non ?
|
|
|
00
|
|
|
#4 | ||||
|
Futur Membre du Club
![]() Développeur Web Inscription : novembre 2007 Messages : 185 ![]() |
Merci pour vos réponses
En faite voici ma requetes : Code :
Code :
|
||||
|
|
00
|
|
|
#5 |
|
Membre Expert
![]() Sylvain DevidalChef de projets Générix Inscription : février 2010 Messages : 1 062 ![]() |
Vu la volumétrie, personnellement, je passerais par une jointure sur une table temporaire : plus de problème de nombre de IN, et certainement de meilleures performances au final.
|
|
|
10
|
|
|
#6 |
|
Futur Membre du Club
![]() Développeur Web Inscription : novembre 2007 Messages : 185 ![]() |
Merci de ta réponse !!
Peux-tu me faire voir la structure du query avec une table temporaire stp ? parce que je ne visualise pas très bien ce que tu veux dire |
|
|
00
|
|
|
#7 | ||
|
Membre Expert
![]() Sylvain DevidalChef de projets Générix Inscription : février 2010 Messages : 1 062 ![]() |
Parmi les syntaxes possibles, la plus simple.
au lieu de faire : tu fais : Code :
|
||
|
|
00
|
|
|
#8 |
|
Futur Membre du Club
![]() Développeur Web Inscription : novembre 2007 Messages : 185 ![]() |
Ok super je test ça tout de suite
Merci
|
|
|
00
|
|
|
#9 | |
![]() ![]() ![]() Frédéric BROUARDExpert SGBDR & SQL Inscription : mai 2002 Messages : 10 959 ![]() |
Citation:
Cependant et comme on vous l'a indiqué, plus il y en a, moins c'est optimal. Donc, passez par une table pour stocker préalablement vos éléments. A +
__________________
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/ Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp. Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation * * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * * |
|
|
00
|
|
|
#10 | ||
|
Membre émérite
![]() Olivier DehorterIngenieur de recherche - Ecologue Inscription : juin 2003 Messages : 697 ![]() |
ok avec stringBuilder sur l'utilisation d'une table temporaire
avec cette syntaxe plutôt que EXISTS Code :
Et ce serait bien de suivre la norme pour les jointure
|
||
|
|
00
|
|
|
#11 |
![]() ![]() |
Quelque chose me dit que $_SESSION['code_groupe'] et $abonnes contiennent des données qui ont été extraites de la BDD...
Pourquoi utiliser une table temporaire si les données existent déjà en BDD ?
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
|
00
|
|
|
#12 | |||
|
Membre Expert
![]() Sylvain DevidalChef de projets Générix Inscription : février 2010 Messages : 1 062 ![]() |
Citation:
On va remettre ça sur le fait que je suis jeune papa, et que ça fait 15 jours que je ne sais plus ce que ça veut dire le mot "dormir" |
|||
|
|
00
|
|
|
#13 | |||
|
Membre Expert
![]() Inscription : août 2009 Messages : 779 ![]() |
Citation:
|
|||
|
|
10
|
|
|
#14 | |
|
Membre émérite
![]() Olivier DehorterIngenieur de recherche - Ecologue Inscription : juin 2003 Messages : 697 ![]() |
Citation:
Bien sur, mais l'utilisation d'une table temporaire doit être "conceptualisée" pour répondre aux besoins et tester son efficacité par rapport à une requête plus "classique" dans sa construction
|
|
|
|
00
|
|
|
#15 | ||||
|
Membre Expert
![]() Yannick Ingénieur Etudes & Developpements Inscription : février 2006 Messages : 1 125 ![]() |
Citation:
[/QUOTE] Citation:
@kamnouz Dans la requete initiale, ce qui me choque c'est le group by, sans utilisation de fonction d'aggrégation... Je pense que cela est fait pour palier une erreur de clause et gerer la génération de doublons. L'utilisation de la jointure explicite peut plus facilement vous ammener a trouver la cause de ces doublons... Comme précaunisé par les intervenants principaux, utilisez une table temporaire, indexez vos colonnes pour optimiser vos performances de recherche, utilisez le EXISTS, et recherchez la cause de la necessité de votre GROUP BY. Bon Courage
__________________
Dans la connaissance du monde, ceux qui ne savent rien en savent toujours autant que ceux qui n'en savent pas plus qu'eux. (Pierre Dac) |
||||
|
|
00
|
|
|
#16 |
|
Membre Expert
![]() |
Je suppose que vous êtes sous MySQL (question non posée je crois...)?
Vous générez donc votre IN côté client au moment de générer votre requêtes? Cette génération fait'elle appel à un mécanisme métier ou est-ce une liste issue de l'IHM (multi-sélection dans une grille par exemple)? Si c'est le premier cas je vous encourage à déporter ce métier dans votre code SQL afin de remplacer le IN par des jointures ou filtres...
__________________
Prendre conscience, c'est transformer le voile qui recouvre la lumière en miroir. |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com