Se una tabella utente può contenere 10-20 righe per ogni utente significa che si può progettarne una versione migliore che possa contenere riferimenti e chiavi esterne per decrivere altre proprietà dell'utente che si possono ripetere (altrimenti il db non è progettato bene), per quanto riguarda le query, qui mi sembra che manchino le conoscenze di base.
1. Da aspnet, tramite la tua applicazione viene inviata una query al server sql.
2. Il server analizza ed esegue la query (quindi applica anche i filtri impostati).
3. Il server invia il risultato alla tua applicazione che deve analizzarlo, non invia tutti i record presenti nel db, ma solo quelli che corrispondono ai criteri di ricerca applicati (se un db funzionasse alla tua maniera oggi non funzionerebbero bene parecchie cose o ci sarebbe una congestione della rete mondiale).
Cmq per quanto riguarda la progettazione dell'applicazione dovresti porre attenzione su proprietà come il Connection Poolig,l'MSDN parla molto attentamente di questo argomento, oltre dovresti progettare pagine leggere e veloci, ma qui penso che solo l'esperienza e la pratica potranno aiutarti (il tutto sommato a delle buone/issime conoscenze del contesto e degli strumenti con cui stai lavorando).