Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1295 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Problème requête SQL

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Problème requête SQL

n°1277624
claralavra​ie
Posté le 05-01-2006 à 14:43:14  profilanswer
 

Bonjour,
je dois créer une requête qui fait un count d'une colonne.
Dans ma clause where, j'ai différentes conditions dont un not in.
Voici le code  

Code :
  1. select count(colonne)
  2. from table1, table2, table3
  3. where table2.col1<>'2' and table2.col2= ' ' and table3.col1 like '0%'and table3.col2='p'
  4. and table1.id =table2.id and table1.id = table3.id  and substr(table1.id,length(table1.id)-2)='49' and table1.id not in (select soustable.col1 from soustable)


 
les 2 requêtes, séparément s'ecute relativement vite.
la 1ère ramène environ 3000 rows tandis que la seconde 130000.
Au bout d'une heure ma reuqête n'est pas terminée.
Est ce que quelqu'un a une idée pour rendre plus performante cette requête.
 
 
J'ai trouvé une requête qui s'execute vite mias je me demande si la syntaxe est correte:
la voici:
 

Code :
  1. select count(idpor)
  2. from (select idpor
  3. from mkt.fdidet@crmpfr1p, mkt.fdcart@crmpfr1p, mkt.fdpart@crmpfr1p
  4. where cadad<>'21001231' and camot= ' ' and fdpart.patvo like '06%'and fdpart.pacl1='Y'
  5. and idpor = capor and idpor = papor  and substr(idagr,length(idagr)-2)='492'
  6. minus
  7. select expor from mkt.EX383181@crmpfr1p)

mood
Publicité
Posté le 05-01-2006 à 14:43:14  profilanswer
 

n°1277684
Arjuna
Aircraft Ident.: F-MBSD
Posté le 05-01-2006 à 15:57:37  profilanswer
 

commence par remplacer ton "not in" par un "not exists".
 
tu devrais déjà gagner énormément de temps. (les IN, c'est mortel, alors qu'un EXISTS, ça fait simplement une jointure, c'est le jour et la nuit)

n°1277710
claralavra​ie
Posté le 05-01-2006 à 17:15:48  profilanswer
 

il ne me renvoit aucune valeur

n°1277717
Arjuna
Aircraft Ident.: F-MBSD
Posté le 05-01-2006 à 17:44:41  profilanswer
 

regarde la doc du exists hein... c'est pas synonyme de in, faut fairequelques modifs quand même

n°1277719
claralavra​ie
Posté le 05-01-2006 à 17:47:23  profilanswer
 

c'est bon moi avoir suivi des études en bases de données, moi avoir

n°1277720
Arjuna
Aircraft Ident.: F-MBSD
Posté le 05-01-2006 à 17:48:34  profilanswer
 

ben alors dit pas bêtement "il me renvoit aucune valeur", puisque toute clause "in" portant sur une sous-requête peut être remplacée pas une clause "exists" et ça donne le même résultat.
c'est donc que tu l'as mal écrite.

n°1277721
claralavra​ie
Posté le 05-01-2006 à 17:52:54  profilanswer
 

mais je ne dis pas bêtement il ne me revoit aucune valeur.
Tu pourrais me parler autrement.
Tu connais rien au gens et tu ramènes ta science...

n°1277761
Arjuna
Aircraft Ident.: F-MBSD
Posté le 05-01-2006 à 19:25:55  profilanswer
 

Attends, je t'arrête tout de suite.
 
Moi je te répond comme tu me parles. C'est pas moi qui ai commecé à écrire en petit nègre genre "vas-y prends-moi pour une conne, je te dirai rien".
Je te donne un conseil, tu me réponds simplement "ça marche pas", sans même poster le requête que t'as testé. Comment veux-tu qu'on t'aide ?
 
L'année 2006 promet d'être terrible... Vous avez quoi tous en ce moment à être inbuvables et insultants ? J'ai pas que ça à foutre que de venir filer des coups de main sur ce forum. Et c'est pas pour l'aide que j'en reçois que je peux dire que ça m'est bénéfique.
 
Tu te rammène comme une fleur avec deux requête qui, sans aucune info, ne nous permet pas de voir en quoi elles sont utiles, ni ce que tu veux faire. Et tu nous demande un coup de main.
Si y'a que moi qui me suis pris la peine de te répondre, c'est pas pour rien : ta question, c'est une cause perdue, on sait ni ce que tu veux faire, ni à partir de quoi, ni même avec quel SGBD. J'arrête le masochisme, et je m'emmerde plus à tenter de filer des coups de main à ceux qui sont pas foutus d'exposer leur problème clairement.
Tant pis pour ceux qui débuttent et qui ne savent pas par où s'y prendre, moi j'en ai marre de me faire recevoir de la sorte quand j'essaie d'aider quelqu'un en dépit de tout.


Message édité par Arjuna le 05-01-2006 à 19:26:05
n°1277762
Arjuna
Aircraft Ident.: F-MBSD
Posté le 05-01-2006 à 19:28:47  profilanswer
 

Pour information, "MINUS" est supporté par un nombre très réduit de SGBD, et pour cette raison je te déconseille de l'utiliser.
Deplus, la plupart des éditeurs de SGBD qui implémentent cette fonction restent très humbles en annonçant que les perfs ne seront pas forcément au rendez-vous car étant donné que peu de monde utilise cette fonction, ils préfèrent concentrer leurs efforts d'optimisation sur les parties courrament utilises (genre les not exists...)

n°1277982
Tamahome
⭐⭐⭐⭐⭐
Posté le 06-01-2006 à 08:32:08  profilanswer
 

hey tu devais plus répondre :fou: :fou:


---------------
Hobby eien /人◕ ‿‿ ◕人\
mood
Publicité
Posté le 06-01-2006 à 08:32:08  profilanswer
 

n°1277986
claralavra​ie
Posté le 06-01-2006 à 08:55:56  profilanswer
 

Tant pis je n'aurais pu ton aide...
et je ne vois pas qu'est ce que ça rapporterait si je te disait ce que ramène cette requête...
la chose serait la même...
j'ai besoin de données d'une table qui ne doivent pas être dans une autre table.
C'est tout ce que je peux dire...Mais bon c'est pas grave....
Merci de ton AMABILITE...tchao

n°1277990
Tamahome
⭐⭐⭐⭐⭐
Posté le 06-01-2006 à 09:11:40  profilanswer
 

tu ne connais manifestement rien des SGBD (sinon tu aurais indiqué les infos utiles qui nous aurait permis de t'aider). Engage plutot quelqu'un qui s'y connait, ca ira plus vite. Y'a plein d'informaticien de dispo sur le marché du travail.


---------------
Hobby eien /人◕ ‿‿ ◕人\
n°1277992
claralavra​ie
Posté le 06-01-2006 à 09:18:26  profilanswer
 

Ok ok...je l'avoue...je n'ai pas fait d'études en sgbd, requ^tage, ca ne fait pas 2 ans que je travaille dedans..non...
Enfin j'ai trouvé un autre forum où les personnes doivent mieux s'y connaitre que vous (explain plan, performances et tout) je vais donc de ce pas me désinscire...et bonne continuation à votre site.

n°1277998
Arjuna
Aircraft Ident.: F-MBSD
Posté le 06-01-2006 à 09:32:07  profilanswer
 

lol, ils en sont à te demander un explain plan pour ce genre de problème ?

n°1278059
Tamahome
⭐⭐⭐⭐⭐
Posté le 06-01-2006 à 11:03:18  profilanswer
 

deja je vois un moyen d'optimiser de facon drastique la requete, si c'etait du DB2... Bien sur, comme on ne sait rien...


---------------
Hobby eien /人◕ ‿‿ ◕人\
n°1278088
Arjuna
Aircraft Ident.: F-MBSD
Posté le 06-01-2006 à 11:47:02  profilanswer
 

Ca m'intéresse ton truc pour DB2, même si j'ai jamais eu l'occasion de m'en servir, ça peut toujours être intéressant :)

n°1278093
Tamahome
⭐⭐⭐⭐⭐
Posté le 06-01-2006 à 11:53:11  profilanswer
 

dans db2 il ne faut jamais utiliser de fonctions (genre les substr que je vois la), ca te plombe des requetes d'une facon assez impressionnante [:chrisbk]
 
En DB2 7.2 du moins :o


---------------
Hobby eien /人◕ ‿‿ ◕人\
n°1278120
Arjuna
Aircraft Ident.: F-MBSD
Posté le 06-01-2006 à 12:20:42  profilanswer
 

Ah ? C'est tout ?
 
C'est pareil avec tous les SGBD, mise à part quelques fonction, généralement ça fait claquer les index, puisque "substr(toto, 2, 1)" ne sera pas dans le même ordre que "toto", et ça fait pareil avec la plupart des fonctions ;)

n°1278144
Tamahome
⭐⭐⭐⭐⭐
Posté le 06-01-2006 à 12:50:06  profilanswer
 

oui mais la c'est sans communes mesures... meme apres tuning de base...


---------------
Hobby eien /人◕ ‿‿ ◕人\
n°1278184
Arjuna
Aircraft Ident.: F-MBSD
Posté le 06-01-2006 à 14:12:20  profilanswer
 

je dirais "surtout" après tuning de la base ;)
 
puisque 80% du tuning vient de la gestion des index ;)

n°1278185
Tamahome
⭐⭐⭐⭐⭐
Posté le 06-01-2006 à 14:18:37  profilanswer
 

pas sur DB2 :D


---------------
Hobby eien /人◕ ‿‿ ◕人\
n°1278193
Worldofdad​a
Posté le 06-01-2006 à 14:28:34  profilanswer
 

Bravo claralavraie pour ta boulettitude.
 
Une personne t'aide et tu l'envoi chier, ben tu ne mérites pas que quelqu'un prenne du temps pour toi.

n°1278245
Tamahome
⭐⭐⭐⭐⭐
Posté le 06-01-2006 à 15:21:08  profilanswer
 

bien dit Worldofdada !


---------------
Hobby eien /人◕ ‿‿ ◕人\
n°1278274
Arjuna
Aircraft Ident.: F-MBSD
Posté le 06-01-2006 à 16:05:09  profilanswer
 

http://forum.hardware.fr/hardwaref [...] m#t1278265
 
Histoire de mettre les point sur les I (en maj, y'en a pas c'est rigolo :D) histoire de voir que :
1) Le NOT EXISTS est effectivement la meilleur solution
2) Le NOT EXISTS retourne les mêmes valeurs qu'un NOT IN, quand on sait l'écrire
3) Ici aussi on sait faire des Explain Plans et on sait même les interpréter (terrible non ?)

n°1278323
Beegee
Posté le 06-01-2006 à 17:39:39  profilanswer
 

Faut juste faire attention à la gestion de la valeur NULL ...
 
Et puis je suis certain qu'il y a des exemples où le NOT IN est plus rapide que le NOT EXISTS, sur certains SGBD, donc ne pas généraliser : TESTER !

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Problème requête SQL

 

Sujets relatifs
[SQL*PLUS] Probleme avec caractere special & dans requete SQL[SQL] Problème écriture requête
Encore un probleme de requete SQL[Résolu] Problème ASP/SQL: erreur dans la requête
probleme dans requete SQLproblème requete Sql avec variable
probleme de test sur une valeur sortie d'une requete SQL[SQL] problème complexe de requête
requete sql probleme avec accent éproblème de syntaxe avec une requête SQL
Plus de sujets relatifs à : Problème requête SQL


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR