salut a tous j'ai besoin de votre aide afin d'optimiser une procédure stocké utilisant un curseur, parce que la consommation cpu (~67% sur un E6550) est délirante ainsi que le temps d'exécution, de plus cette procédure est relancer dès qu'elle prend fin je ne peut donc pas la laisser en l'état.
voici le monstre:
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
16
17
18
19
20
21
22 CREATE PROCEDURE scheduler_addblock @dmax INT AS DECLARE @dom_id BIGINT DECLARE @btime DATETIME SET @btime = ( SELECT GETDATE() ) DECLARE Reader CURSOR FOR SELECT A.dom_id FROM [domain] A,infos B WHERE B.dom_id = A.dom_id AND B.info_download >= @dmax OPEN Reader FETCH NEXT FROM Reader INTO @dom_id WHILE @@FETCH_STATUS = 0 BEGIN INSERT INTO blocked(block_type,block_time,dom_id) VALUES(1,@btime,@dom_id) END CLOSE Reader DEALLOCATE Reader GO
merci a vous
Partager