Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Convaincre le serveur SQL de rechercher en arrière sur l'index clusterisé pour un schéma d'insertion uniquement

SQL Server est incapable de produire un tel plan de requête à partir de 2012. Réécrivez la requête :

SELECT ids.feeditem_id, MaxID
FROM (VALUES (827), (815), (806)) ids(feeditem_id)
CROSS APPLY (
 select TOP 1 ID AS MaxID
 from spotquote sq
 where sq.feeditem_id = ids.feeditem_id
 ORDER BY ID DESC
) x

Cela se traduit par un plan qui effectue une recherche dans le spotquote table par ID que vous spécifiez. C'est le mieux que nous puissions faire. SQL Server ne peut pas abandonner une agrégation dès que tous les groupes qui vous intéressent ont au moins une valeur.