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 :
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.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
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.
Partager