Na consulta que você postou:
select * from <table_name>;
As linhas 100 a 200 não existem, porque você não especifica um ORDER BY. O pedido não é garantido, a menos que você inclua o ORDER BY por várias razões interessantes, mas esse não é realmente o ponto aqui.
Então, para ilustrar seu argumento, vamos usar uma tabela - vou usar a tabela Users do despejo de dados Stack Overflow e executar esta consulta:
SELECT * FROM dbo.Users ORDER BY DisplayName;
Por padrão, não há índice no campo DisplayName, portanto, o SQL Server precisa varrer a tabela inteira e classificá-la por DisplayName. Aqui está o plano de execução :
Não é bonito - é muito trabalho, com um custo estimado da subárvore em torno de 30k. (Você pode vê-lo passando o mouse sobre o operador de seleção em PasteThePlan.) Então, o que acontece se queremos apenas as linhas 100-200? Podemos usar esta sintaxe no SQL Server 2012+:
SELECT * FROM dbo.Users ORDER BY DisplayName OFFSET 100 ROWS FETCH NEXT 100 ROWS ONLY;
O plano de execução também é bastante feio:
O SQL Server ainda está varrendo a tabela inteira para criar a lista classificada, apenas para fornecer suas linhas de 100 a 200, e o custo ainda é de cerca de 30 mil. Pior ainda, toda essa lista será reconstruída toda vez que sua consulta for executada (porque, afinal, alguém pode ter alterado seu DisplayName.)
Para acelerar, podemos criar um índice não clusterizado em DisplayName, que é uma cópia da nossa tabela, classificada por esse campo específico:
CREATE INDEX IX_DisplayName ON dbo.Users(DisplayName);
Com esse índice, o plano de execução da nossa consulta agora busca um índice:
A consulta termina instantaneamente e tem um custo estimado da subárvore de apenas 0,66 (em oposição a 30k).
Em resumo, se você organizar os dados de uma maneira que ofereça suporte às consultas que você executa com freqüência, sim, o SQL Server poderá usar atalhos para acelerar suas consultas. Se, por outro lado, tudo que você tem são pilhas ou índices agrupados, você está ferrado.