Eu tenho uma tabela com muitas datas, dez anos no futuro e dez anos de história. (combinado com o ID do cliente e mais)
A maioria das leituras e gravações de/para o banco de dados é para registros com a data atual.
Como o sql server usaria um índice exclusivo classificado no campo de data? Ele começará na parte superior ou inferior e examinará metade do índice antes de encontrar a data atual?
Ou existe alguma forma de começar no meio do índice e escanear para cima ou para baixo com base no primeiro valor no índice?
Os índices não clusterizados do SQL Server são classificados em ordem crescente por padrão, a menos que você especifique que eles devem estar em ordem decrescente ao defini-los.
(Também vale a pena notar que, se uma tabela for um índice clusterizado, esse índice clusterizado também será incluído em todos os índices não clusterizados.)
Quando ele usa esse índice, ele geralmente faz uma busca no índice no local correto, usando a estrutura de árvore B do índice, caso contrário, ele varrerá o índice inteiro se o índice não satisfizer a consulta.