Je reprends une application où une des procédures stockées demande un temps de temps très long.
Elle est composé d'un Select.
Ce Select est lui même composé de deux select principaux, le premier est lié au second par un Left Outer Join.
Chacun de ces deux Select est lui-même composé de Select imbriqués et d'un Pivot.
Si j'exécute séparément chacun de Select principaux j'obtiens un temps de réponse de moins d'une minute (pour 2 millions d'enregistrements lus)
Si je les exécute ensemble avec le left outer Join je dépasse de quart d'heure.
J'avais pensé exécuter le premier Select et conserver son résultat, exécuter le second et conserver le résultat et faire ensuite une requete sur les deux résultats intermédiaires.
Cela aurait aussi donné un code plus clair.
Ma question est de savoir comment conserver ces résultats intermédiaires sans créer si possible de table temporaire.
Avec Un With la seconde requête éfface le résultat de la première
Avec un Cursor je ne sais pas écrire un select lisant un Cursor
Merci d'avance de vos remarques
Partager