Должен ли я просто сделать это, когда я собираюсь использовать это?
Я бы порекомендовал вам получать данные только тогда, когда вы собираетесь их использовать. Если вам это не понадобится, нет причин тратить ресурсы, извлекая их из Page_Load. Если вам потребуется это несколько раз в течение загрузки страницы, рассмотрите возможность сохранения результатов запроса в частную переменную или коллекцию, чтобы одни и те же данные можно было многократно использовать в течение загрузки страницы.
Открываю ли я новое соединение при создании нового экземпляра?
Asp.net обрабатывает пул соединений , а также эффективно открывает и закрывает соединения. Вам не нужно беспокоиться об этом.
Еще одна вещь, которую следует учитывать с точки зрения производительности, - это избегать использования наборов данных и адаптеров таблиц. Во многих случаях они добавляют дополнительные издержки к извлечению данных, которых не существует при использовании Linq to Sql, хранимых процедур или DataReaders.