begin process at 2012 05 26 22:56:57
  Trouver un code source :
 
dans
 
Accueil > Forum > 

SQL

 > 

Sybase

 > 

Requêtes

 > 

Optimisation requete + opérateur IN


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Optimisation requete + opérateur IN

mardi 22 décembre 2009 à 12:23:05 | Optimisation requete + opérateur IN

bossun



Salut j'ai la requete suivante qui me prend 40 sec à s'exécuter.

Code :
SELECT A.RefDate, 'Swap' AS Product, sum(A.BPV) AS BasePV, sum(abs(A.BPV)) AS AbsoluteBasePV FROM
(
SELECT p.ReferenceDate AS RefDate,
INS.MaturityDateAdj AS Mat, 
 LG.CurrencyID AS CCY,   
ROUND(LGD.InterestFixedRate,8) AS IFR, 
LG.InterestIndexID AS IID, 
sum(VTR.BasePV) AS BPV
               FROM panorama..InstrumentLeg LG,
                    panorama..InstrumentLeg LGD,
                    panorama..Instrument INS,
                    panorama..ValuationTabResults VTR,
                    panorama..PortfolioResults p,
                    panorama..PartitionMapData PMD                   
WHERE p.ResultsID = VTR.ResultsID
AND  INS.InstrumentID = LG.InstrumentID
AND  INS.InstrumentID = LGD.InstrumentID 
AND LG.LegType = 'Flt'
AND LGD.LegType = 'Fxd'
AND INS.InstrumentID = PMD.Key4
AND PMD.Key0 = 'Swap'
AND INS.VersionNumber = 0 
AND LG.VersionNumber = 0
AND LGD.VersionNumber = 0
AND VTR.UserPartitionID=PMD.PartitionCode
AND p.PortfolioID IN  (SELECT PortfolioID FROM RPTRISK_DeskPortfolioMapping WHERE DeskID='oblig') 
GROUP BY p.ReferenceDate,
INS.MaturityDateAdj,  
LG.CurrencyID, 
 ROUND(LGD.InterestFixedRate,8), 
LG.InterestIndexID 
) A
GROUP BY A.RefDate


lorsque le remplace cette ligne
Code :

Code :
p.PortfolioID IN  (SELECT PortfolioID FROM RPTRISK_DeskPortfolioMapping WHERE DeskID='oblig')


par simplement

Code :
p.PortfolioID IN  ('ABOBLIG','PRIMOBLI') 
--Ces valeurs étant le resultat envoyé par (select PortfolioID from RPTRISK_DeskPortfolioMapping where DeskID='oblig')



La requete s'exécute en moins 1s

qu'est-ce qui cloche? Ma table RPTRISK_DeskPortfolioMapping contient une 40aine d'enregistrements en tout. J'ai tenté divers variantes en incluant la table RPTRISK_DeskPortfolioMapping dans une jointure mais rien n'y fait....

Merci de votre aide


Bossun

P.S1  C'est mieux de prendre son pied que de se prendre la tête!

/F
mardi 22 décembre 2009 à 16:51:48 | Re : Optimisation requete + opérateur IN

tpoinsot

bonjour,

le select interne risque d'être réévalué plusieurs fois, il vaut mieux utiliser une jointure, avec des index sur les champs situés de part et d'autre de la jointure.

Par ailleurs, je ne vois pas l'intérêt des deux premiers niveaux de select, le group by est le même et n'apporte pas de simplification en lecture par rapport à un seul select.
Ou bien j'ai mal lu.

thip
mardi 22 décembre 2009 à 17:07:11 | Re : Optimisation requete + opérateur IN

bossun


Je l'ai déjà mis en jointure mais le problème est le même.

Pour les selects on peut peut-etre faire autrement mais là, c'est pas mon soucis principal.

Merci pour ton message...



Bossun

P.S1  C'est mieux de prendre son pied que de se prendre la tête!

/F


Cette discussion est classée dans : code, and, lg, ins, lgd


Répondre à ce message

Sujets en rapport avec ce message

Requete oracle [ par drbarton ] Bonjour,j'ai céé une requete sql pour récupérer le montant des commandes par categorie de consommable. Il se trouve qu'elle marche parfaitement sous t utilisation d'un resultat intermédiaire dans un code SQL [ par hydroxyproline ] Bonjour à tous,Mon titre n'est pas très explicite, je n'arrive pas à formuler en un titre ma pensée, mais ne vous inquiétez pas, je vais expliquer tou code d'authentification jsp [ par landoulsi1986 ] J'ai une grade erreur qui a bloqué la progression de mon projet le pb est dans ce code d'authentification jsp: <% Class.forName ("com.mysql.jd insertion des images dans la base de données [ par saber001 ] je creer un une base de données qui contient un une table image, dans cette table je veux inserer une image et l'afficher ensuite sur une page web:on Requête vraiment spéciale [ par Marianne25 ] Bonjour, <p class="MsoNormal" style="MA problem avec un trigger [ par zaherM ] slt tous le mnd je suis un debutant en programation je desire creer un trigger ki me permet de calculer le cout moyen pondere du prix d achat dun prod modification dans une jointure [ par marocmarocmaroc ] Salutj'ai un problème en sql/php  je veux modifier des champs issues de deux  tables  article (code_article,designation) et article_magasin(qte_stocke Requête difficile [ par othinakiway ] A partir du schéma relationnelle suivante :Entreprise(RS, tel, adresse, fax ...#codeP, #codeS)Secteur(codeS,#nomS)Branche(codeB,nomB,#codeS)Région(cod Disparitions de ligne de données (Oracle) !?!?!? (dans SELECT avec UNION, pas de doublons possible !) [ par Polack77 ] Bonjour ,J'ai un problème avec une sélection dans oracle :J'ai une table qui contient 140 426 lignes (soit pas temps que sa enfin me semble t'il)J'ai Procedure de recherche [ par hardzip ] Bonjour tout le mondeJe suis actuellement entrain de mettre en place un formulaire de recherche avec asp et  .NET et j'ai un probleme qui me bloque de


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,045 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales