Je regarde une requête avec, dans le cadre de la clause where, DateDiff(month, table1.dateReported, table2.dateTransDate) <= 6
, où dateReported et dateTransdate sont dans des tables différentes. J'ai récemment lu que l'utilisation de fonctions SQL dans une clause where peut entraîner des problèmes de performances. Comment puis-je modifier cela pour ne pas utiliser le datediff?Élimination de DateDiff dans SQL Server où clause
Il est essentiellement une approche avec quelque chose comme
SELECT *
FROM Table1
LEFT JOIN Table2 on Table1.transactionID = Table2.transactionID
WHERE DateDiff(month, Table1.dateReported, Table2 .dateTransDate) <= 6
ce ne sera pas votre principale préoccupation, pourquoi ne pas utiliser la fonction de construction si elles vous ont déjà pointé un raccourci xD – LONG
Dater reportées et datetransdate dans la même table ou des tables séparées? Si ce n'est pas le cas, il ne sera pas sargable (du moins sans créer une colonne calculée). Si vous le séparez, vous pouvez le rendre sargable pour une colonne mais pas pour l'autre. Ce qui sera le mieux dépend. –
Veuillez inclure la question que vous avez déjà dans votre question. Indiquez clairement de quelle (s) table (s) proviennent les colonnes de votre expression DateDiff. –