Bonjour � tous,
voici mon probl�me :
J'ai une requete sql sur une base de Prod d'un client. Pour info, cette requ�te comporte des fonctions imbriqu�es.
Cette requete, en "mode rapide" prend entre 4 � 10 secondes, et 7 minutes en "mode long" !
Apr�s diff�rents tests, v�rifications des parametres bdd (flag TSQL_SCALAR_UDF_INLINING est bien activ�), comparaison des plans d'ex�cutions "rapide" vs "long", je me rends compte qu'en vidant le cache des plans d'exec via SSMS (commande "DBCC FREEPROCCACHE") => je suis en "mode rapide"...
au fil des heures, la requ�te revient en "mode long", et je dois (re)faire � nouveau un DBCC pour vider le cache des plans d'exec et revenir � une situation "mode rapide".
Afin d'avoir une solution "p�renne" et ne pas avoir besoin de vider les caches chaque jour � la main, j'ai test� en ajoutant "OPTION (RECOMPILE)" en fin de ma requ�te.
=> probl�me : ce OPTION (RECOMPILE) n'a pas l'effet esp�r�, je reste en "mode long" malgr� son ajout !?
Questions :
- Savez vous pourquoi ? (j'imagine une histoire de plan d�ex�cution non recalcul� dans les fonctions imbriqu�es...).
- connaissez vous une commande / option + forte que "OPTION (RECOMPILE)" pour ne pas avoir besoin de faire un dbcc et que ma requete reste en "mode rapide" ?
Informations compl�mentaire :
- SQL Server 2019 / 8 processeurs
- les aspects "infra" sont �cart�s : j'ai une base de Test sur la m�me instance, ma requ�te est toujours en "mode rapide" alors qu'en m�me temps sur la PROD on est en "mode lent" (on peut �carter les pistes DD, CPU, surcharge, RAM, ..)
Merci d'avance pour vos id�es, pistes, r�ponses .....
Nicolas
Partager