Bonjour à tous,

je me permets de vous contacter car j'ai un problème de performance avec l'exécution d'une procédure stockée.

Actuellement,j'ai une procédure qui prend en entrée plusieurs paramètres:
- @Id INT,
- @MD MD READONLY,
- @Ids NVARCHAR(MAX) OUTPUT

Cette procédure a pour but de traiter les données de la table valued @MD.
Pour chaque élément de cette table valued, je fais une boucle while dans laquelle je fais plusieurs traitement:
- Un ensemble de select sur ma base de données. Suivant les résultats j'affecte à des variables des valeurs différentes
- Une insertion dans une table de ma base avec les valeurs récupérées juste avant.
- Je récupère la clé primaire à l'aide de SET @Tid = (SELECT @@IDENTITY)
- Dans ma variable @Ids de sortie je concatène les clés primaires séparées par une virgule
SET @Ids = (SELECT CONCAT(@Ids, @Tid, ','))

En résumé pour chaque ligne de ma table valued je fais un certain nombre de traitements puis je fais une insertion en base.

Je pense que les problèmes de performances peuvent venir du fait que j'insère ligne par ligne au lieu de faire un seul insert.
Pensez vous que cela vient de ça?

De plus, si ça peut venir de là, je ne vois pas comment faire une seule insertion, étant donné que je dois pourvoir retourner l'ensemble des clés primaires créées.
Avez vous une idée?

Je vous remercie d'avance.