Estou executando a consulta abaixo no Azure SQL DB:
SELECT
[TransactionID],
[TrackingNumber],
TRY_CAST([EventCode] as int) as EventCode,
[EventDesc] ,
[EventTime],
[EventCountry],
[EventState],
[EventCity],
[EventPostCode],
[SpecialOperDesc],
[Reference]
FROM [dbo].[MyTable]
with (index = IX_EventTime_TrackNum_Reference)
WHERE EventTime>= dateadd(d,-15,getdate())
AND LEN(TrackingNumber) >= 22
AND Reference IS NOT NULL
Forçando-o a usar o índice não clusterizado IX_EventTime_TrackNum_Reference
com Index Hint, e funcionou até recentemente. O plano exec era busca de índice não clusterizado mais pesquisas em índice clusterizado.
Agora ele tenta usar o ColumnStore Index Scan em um índice columnstore não clusterizado existente . Posso vê-lo ao vivo usando abaixo:
exec sp_WhoIsActive @get_plans = 2
O desempenho piorou, pois o ColumnStore Index não clusterizado é consideravelmente maior em tamanho do que IX_EventTime_TrackNum_Reference e tem alguns dados no delta store. O SQL DB é relativamente pequeno e o armazenamento é lento.
O que faz a consulta ignorar Index hint? E como forçá-la a usar IX_EventTime_TrackNum_Reference
novamente?