J'ai un matrice de hachage de matricule allant ici. J'ai mis à jour les statistiques avec FullScan sur les tables impliquées, de sorte que ce n'est pas ça. Tous les pointeurs très appréciés.
https://www.brentozar.com/pastetheplan/?id=bkq1vjysm
Je suis sur SQL 2017 Enterprise, avec 64 Go de RAM.
Compte tenu de la taille des données, il peut ne pas être possible d'éviter entièrement les déversements, mais vous pouvez faire des choses pour améliorer la requête.
RN
) provoque une solution et un déversement, cela peut être envisagé indexation différente pour résoudre ce problème. Notez que l'expression que vous utilisez là-bas, DATEDIFF(day,s.COMPLETEDDATE,att.atd_date
, Est également utilisé dans ...... Le prédicat non sargable que vous avez pour actual_day_difference
(AND a.actual_day_difference BETWEEN -60 AND 90
), Qui élimine les lignes de ~ 5mm à ~ 400k. Tout à fait une réduction qui peut aider la requête tôt.
Le problème est que l'ensemble du résultat défini pour DATEDIFF(day,s.COMPLETEDDATE,att.atd_date)
doit être généré, puis filtré. Calculer des calculs tels que celui de la CTE, une table dérivée ou une vue non indexée ne les persiste pas. Consultez mon Q & A ici: Sargable où la clause pour deux colonnes de date .
Je ne sais pas s'il y a une relation entre attend
et Study
, mais il peut être utile d'utiliser une table Temp ou une vue indexée pour matérialiser l'expression pour le rendre sargable. Vous pouvez également explorer l'ajout et la remplacement d'une colonne supplémentaire à l'une des deux table contenant les données de date correspondantes.
Cela ouvrirait également des options d'indexation supplémentaires pour vous et la possibilité de matérialiser le ABS
sur DATEDIFF
aussi, si nécessaire.
Comme il s'agit pour SQL Server 2014, il peut être utile d'explorer index de colonne de colonne non cluster , ce qui réduirait probablement la douleur d'essayer de déterminer les indices de magasin de rangées appropriées et sont plus appropriés pour le plus grand style DW. Requêtes comme celle-ci.
J'espère que cela t'aides!