Je recevais des délais d'attente sur mon application lorsque j'essayais d'appeler une procédure stockée spécifique. Je l'ai isolé à un sproc spécifique et j'ai découvert que lorsque j'appelle une fonction tablevalued dans ce sproc avec un paramètre, cela prend une éternité à s'exécuter. Mais si je passe dans une valeur spécifique (comme 804), il reviendra rapidement. Si je l'exécute tout seul avec le paramètre, il fonctionne bien, mais quand je le rajoute dans la requête avec le paramètre, il s'exécute pour toujours .... alors permuter le param avec une valeur statique et il court vite?Problème vraiment étrange avec la fonction Valued Table
mesures que j'ai pris:
- procédure supprimée et recréée.
- Ran
DBCC FREEPROCCACHE
sur tous les plans contenant une chaîne de requête similaire. - Juste un db de test donc j'ai restauré le db avec la sauvegarde des dernières nuits.
Une autre chose à noter. Sur un autre db sur le même serveur ... à peu près la même quantité de données ça marche bien ...... très étrange.
Qu'est-ce que je néglige? Je ne comprends vraiment pas.
question connexe ici: http://stackoverflow.com/ questions/866722/t-sql-process-design-and-execution-plan-udf-parameter-sniffing – JNK
Assurez-vous que le type de données du paramètre fonction et du paramètre SP est identique. Vérifiez également les plans d'exécution dans les deux cas. –
@amit_g: devrait faire une réponse. C'est un point valide. – gbn