Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Convincente server SQL a eseguire ricerche all'indietro sull'indice cluster per uno schema di solo inserimento

SQL Server non è in grado di produrre un piano di query di questo tipo a partire dal 2012. Riscrivi la query:

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

Ciò si traduce in un piano che effettua una ricerca nel spotquote tabella per ID specificato. Questo è il meglio che possiamo fare. SQL Server non è in grado di interrompere un'aggregazione non appena tutti i gruppi a cui sei interessato hanno almeno un valore.