Nous avons requête qui est lente dans la production (pour une raison interne),Convertir OUTER APPLY à LEFT JOIN
SELECT T2.Date
FROM Table1 T1
OUTER APPLY
(
SELECT TOP 1 T2.[DATE]
FROM Table2 T2
WHERE T1.Col1 = T2.Col1
AND T1.Col2 = T2.Col2
ORDER BY T2.[Date] DESC
) T2
Mais quand je convertir à LEFT JOIN il devient rapide,
SELECT Max(T2.[Date])
FROM Table1 T1
LEFT JOIN Table2 T2
ON T1.Col1 = T2.Col1
AND T1.Col2 = T2.Col2
GROUP BY T1.Col1, T1.Col2
Peut nous disons que les deux requêtes sont égales? Si non alors comment le convertir correctement.
Ils ne sont pas égaux car votre première requête n'est pas une syntaxe valide - mais votre tentative d'obfuscation a peut-être introduit une erreur. Vous faites référence à A.DATE mais l'alias A n'est pas défini. – SMor
@SMor oui j'ai corrigé maintenant. Est-ce égal? – user960567
En outre, la logique suggérée semble s'appuyer sur certaines hypothèses. L'utilisation d'un agrégat devrait réduire le nombre de lignes renvoyées en supposant que la logique est analogue. Est-ce juste de la chance basée sur les données disponibles que vous semblez penser que ce sont les mêmes? Avez-vous essayé et comparez les résultats? – SMor