Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

As leituras não estão ficando baixas depois de colocar um índice


Você está selecionando as 50 principais linhas ordenadas por e.uon desc . Um índice que começa com uon irá acelerar a consulta:
create index IX_Empl_Uon on dbo.empl (uon)

O índice permitirá que o SQL Server verifique as N linhas superiores desse índice. N é o número mais alto em sua paginação:para a 3ª página de 50 elementos, N é igual a 150. O SQL Server faz 50 pesquisas de chave para recuperar as linhas completas do índice clusterizado. Até onde eu sei, este é um exemplo de livro didático de onde um índice pode fazer uma grande diferença.

Nem todos os otimizadores de consulta serão inteligentes o suficiente para perceber que row_number() over ... as rn com where rn between 1 and 50 significa as 50 primeiras linhas. Mas o SQL Server 2012 sim. Ele usa o índice para as primeiras páginas e páginas consecutivas, como row_number() between 50 and 99 .