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
.