la risposta e' abbastanza ovvia. E' giusto caricare solo il minimo indispendabile dei dati. Quindi se devi solo verificare che ci sia un record in una tabella tanto meglio fare un SELECT COUNT(*) WHERE ..... e vedere se torna 1 o 0. Se invece devi anche mantenere i dati da qualche parte ma sempre e solo di un record non ha senso caricare tutti i record e poi filtrare per trovarne uno. Meglio caricare solo quello.

Detto questo, per gestire l'autenticazione degli utenti, come mi sembra di aver detto gia a te in un altro thread, dovresti utilizzare le classi che asp.net e il framework ti mettono a disposizione. Anche nel caso in cui hai gia' un db che ' diverso da quello proposto in automatico, non e' difficile implementare il proprio custom membership provider.
All'inizio puo' sembrarti difficile ma poi tutto in realta' diventa piu' semplice che non usare session, dataset, dataview e compagnia bella.