[SQL2K] commande sp_cursorprepexec
Bonjour,
Depuis un petit moment les utilisateurs de ma société se plaignent de gros ralentissement sous notre application CRM (Adonix), en regardant les performances du serveur je me suis aperçu que la longueur moyenne de file d'attente de lecture du disque est souvent très élevée et dans le générateur de profil SQL de nombreuses requêtes apparaissent comme assez gourmandes en lecture, par exemple lle type de requête suivante :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| declare @P1 int
set @P1=1023
declare @P2 int
set @P2=180150511
declare @P3 int
set @P3=8
declare @P4 int
set @P4=1
declare @P5 int
set @P5=1
exec sp_cursorprepexec @P1 output, @P2 output, N'@P1 int', N'Select SDH_.IDENTITYCOL, SDH_.BPCINV_0, SDH_.SALFCY_0, SDH_.CFMFLG_0, SDH_.INVFLG_0, SDH_.DLVDAT_0, SDH_.LND_0, SDH_.SHIDAT_0, SDH_.BPAADD_0, SDH_.BPCORD_0, SDH_.SDHNUM_0, BPC_.BPCNAM_0
From SDELIVERY SDH_ LEFT OUTER JOIN BPARTNER BPR_ ON ((BPR_.BPRNUM_0 = SDH_.BPCORD_0)) LEFT OUTER JOIN BPCUSTOMER BPC_ ON ((BPC_.BPCNUM_0 = SDH_.BPCORD_0))
Where SDH_.LND_0 = @P1
Order by SDH_.SDHNUM_0 Desc', @P3 output, @P4 output, @P5 output, 1
select @P1, @P2, @P3, @P4, @P5 |
Cette requête prend environ une vingtaines de secondes et 1 million en lecture, pourtant ces trois tables ne dépassent pas 300 000 enregistrements, et l'exécution de cette requête dans l'analyseur ne prend pas autant de temps.
J'ai essayé de rechercher des informations sur la commande sp_cursorprepexec et comment faire pour optimiser l'exécution mais j'avoue que je suis totalement dépassé, si quelqu'un a déjà été présenté à ce genre de cas et a une solution je suis preneur ;)
Merci d'avance.