Bonjour,
Je travaille sur une instance SQL 2000 Entreprise Edition SP4. En lançant le profiler j'observe qu'une procédure stockée occasionne parfois un nombre de read de "25" et parfois un nombre de read de l'ordre "150000" soit un rapport 5000. Lorsque le nombre de read est de l'ordre de "150000", le CPU sur le profiler est supérieur à 0 comme si le plan d'exécution de la procédure était recalculé alors que n'oberserve aucun update de statistiques dans le profiler.
Voici le code de cette requête
Cette procédure ne provoque évidemment que la lecture de quelques pages lorsque je l'exécute, je n'arrive pas à reproduire le cas problématique. Le plan d'exécution montre que SQL SERVER fait 2 seek d'index :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 ALTER PROCEDURE [dbo].[psNoDossierUtilise] @NoDossier VARCHAR(20), @Client VARCHAR(15), @Utilise BIT OUTPUT AS if exists(SELECT Client FROM CLIENTINTER WHERE NoInter in (SELECT NoInter FROM INTER WHERE NoDossier = @NoDossier) AND Client = @Client) set @DejaUtilise = 1 else set @DejaUtilise = 0
- Le 1er sur un index non clustered de la table CLIENTINTER (index uniquement sur la colonne Client
- Le 2éme sur un index non clustered de la table INTER (index uniquement sur la colonne NoDossier)
Avez-vous déjà rencontré ce problème ?
Merci d'avance pour vos réponses
Partager