mam dwa datetimeoffset
pola w tabeli (lazur sql), Migrated
i Updated
Zwykle przeprowadzam to wyszukiwanie select * from table where Migrated < Updated
Jaka byłaby właściwa strategia indeksowania tych pól?
- dwa indeksy, po jednym dla każdego pola
- jeden indeks włączony
Migrated
,Updated
- jeden indeks włączony
Updated
,Migrated
Tabela jest ogromna i wymaga indeksowania ...
Odpowiedzi:
2 dla odpowiedzi № 1W większości wersji SQL Server można zastosować następujące podejście. Nie próbowałem tego na SQL Azure.
Utwórz kolumnę obliczeniową, a następnie indeks tego:
alter table t add MigratedToUpdatedTime as (datediff(seconds, Migrated, Updated))
create index t_MigratedToUpdatedTime on t(MigratedToUpdatedTime);
Następnie w swoim where
klauzula, możesz zrobić:
where MigratedToUpdatedTime > 0;