Comprendre la différence de performances entre 2 requêtes
Modérateurs : Thierry DEMAN (MVP Exchan, ygainche, Modérateurs, Modérateurs_Applicatifs
Comprendre la différence de performances entre 2 requêtes
Bonjour à tous,
Je travaille actuellement sur un projet qui a été créé par un ancien collègue. Le projet tourne sur 2 sites différents. Les serveurs sont quasi identiques:
- même CPU
- même nombre de core dans la VM
- la VM du premier site à 5 Go de RAM et la VM du second à 3 Go RAM
- tous les deux en Windows 2008 R2
- tous les 2 avec SQL Server Express v10.0.2531
Sur le premier site, nous n'avons jamais rencontré de problème de performance.
Sur le deuxième site, j'ai une grosse différence de performance alors que le nombre de record est 3x plus petit.
Temps d’exécution: +/- 1 min 30
Pour améliorer les performances, j'ai corrigé la requête comme suit:
Temps d'éxécution: 1s
Quelqu'un pourrait-il m'expliquer pour j'ai une tel différence de performance juste en changeant l'affectation de la variable?
Merci d'avance.
Bien à vous,
Jérôme
Je travaille actuellement sur un projet qui a été créé par un ancien collègue. Le projet tourne sur 2 sites différents. Les serveurs sont quasi identiques:
- même CPU
- même nombre de core dans la VM
- la VM du premier site à 5 Go de RAM et la VM du second à 3 Go RAM
- tous les deux en Windows 2008 R2
- tous les 2 avec SQL Server Express v10.0.2531
Sur le premier site, nous n'avons jamais rencontré de problème de performance.
Sur le deuxième site, j'ai une grosse différence de performance alors que le nombre de record est 3x plus petit.
Code : Tout sélectionner
SELECT @RTempo = (SELECT sum(datediff(mi,CAST('2006-01-01 00:00:00.0000000' AS DateTime2),action_time) *
case [action]
when 2 then 1
when 1 then -1
when 14 then -1
when 13 then 1
when 11 then -1
when 12 then 1
end)
FROM [TableAuditMainDatabase].[dbo].[v_td_tda_tdae]
where id_casino_day = @jour and id=@table and data_type = 1 and action in (1,2,11,12,13,14)
)
Pour améliorer les performances, j'ai corrigé la requête comme suit:
Code : Tout sélectionner
SELECT @RTempo = sum(datediff(mi,CAST('2006-01-01 00:00:00.0000000' AS DateTime2),action_time) *
case [action]
when 2 then 1
when 1 then -1
when 14 then -1
when 13 then 1
when 11 then -1
when 12 then 1
end)
FROM [TableAuditMainDatabase].[dbo].[v_td_tda_tdae]
where id_casino_day = @jour and id=@table and data_type = 1 and action in (1,2,11,12,13,14)
Quelqu'un pourrait-il m'expliquer pour j'ai une tel différence de performance juste en changeant l'affectation de la variable?
Merci d'avance.
Bien à vous,
Jérôme