Cuando hablo de select filtrados es usando:
Código SQL
[-]
SELECT EspecificarCampo1,EspecificarCampo2.... WHERE FILTROAQUI
La idea es no cargar mas de unos 100 registros por pagina.
Si miras cualquier control veras que tiene una opcion de viewstate. El viewstate es una cosa que mantiene una copia de los valores de los controles como un campo oculto en la pagina. Lo que implica que los valores se estan duplicando en cada request.
EL sistema de cacheo es algo mas complicado, no porque sea dificil de programar sino mas bien porque requiere pensar cuando si cuando no.
Lo mejor es que le des una vuelta a la documentacion para que te empapes del tema y tambien seria bueno ejemplos de codigo para uno saber a que le esta apuntando