Hola, como alternativas para paginar resultados en SQL Server, he encontrado aquí 
este post, que no se adapta muy bien a mis necesidades y esta otra query:  
Código:
 SELECT TOP 20 t.indice, t.descripcion
  FROM tabla t
  WHERE (
        SELECT count(*) as total
             FROM tabla t2
             WHERE t2.indice <= t t.indice
            AND t2.descripcion like 'a%'
            ) > (20 - 1) - 20
    AND t.descripcion like 'a%'
  Que en querys con where complejos y muchos join se puede volver un poco infernal y ademas no se como de eficiente es con ese anidamiento y Count(*). 
De momento mis alternativas son: 
A - Paginar en ASP => Cada cambio de pagina tengo que recuperar TODOS los registros, auqnue solo vaya a ver 20
B - Usar esta query => ¿Es ineficiente? 
Me planteo usar la segunda cuando sea una tabla con muchos registros,  
¿que pensais que es 
MUCHOS REGISTROS para que resulte necesario usar la alternativa B? 
¿Conocéis otra solución? 
Gracias