bonjour j'ai quelques requêtes à optimiser.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
Rupture = case when bat.id_dep = bat.id_arr then 0 else 1 end
il faut éviter le case-when dans l'optimisation.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
Rupture = bat.id_arr (bat.id_dep,0)
est-ce ma syntaxe est correcte ?



Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
AND s.Dh_Arr <= @DateDebut
AND s.dh_dep > @DateFin
dans l'optimisation, on évite les <> et on utilise plutôt between. du coup, j'ai ceci:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
AND s.Dh_Arr between '0001-01-01 00:00:00.000' and @DateDebut
AND s.dh_dep between @DateFin and '9999-12-30 00:00:00.000'
je ne suis pas sure de ma syntaxe sachant que j'ai un '>' pour ma date. comment dois-je m'y prendre ? faut-il que j'utilise dateadd(time,1) sachant que mon datedebut et datefin sont des datetime ?



et enfin, je voudrais éviter mon 'left join' qui n'est pas recommandé en optimisation. j'ai ceci :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
 
SELECT...
FROM ...
LEFT JOIN bat as bt with (nolock) on s.id_sg = bt.id_se1
WHERE sg.id_rv = @Id_srv
AND sg.id_im = @Id_sim1
AND sg.id_ct = 0
AND sg.dh_ep > @DateFin
normalement, il faut utiliser une sous-requête mais je ne sais pas comment m'y prendre.

merci d'avance