Я делал c DataGrid, но в лок. сети. Таблица отображает несколько "основных" столбцов, по клику на строке в другом фрейме выводилось полное содержание всех полей в форме (как раз то, что тебе не надо

).
Листинг грузит по 1000 строк за один запрос и работает примерно 1 с. Это на хорошей тачке.
На серваке c базой работают perl-скрипты.
В другом проекте использовал Tree с динамической подгрузкой дочерних узлов и, по клику, связанной с ними информации в форму (все в одном окне, типа "проводника"). Но в этом проекте структура данных в базе была иной - несколько связанных таблиц разного назначения, моделирующих специфику "дерева". Но со скоростью загрузки проблем не было вообще. Пользователь не грузит все валом, а подгружает только то, что надо. Данные были разбиты на 3-4 уровня вложенности, так как задача это позволяла. К тому же, сделал локальный кэш: загрузил один раз ветку, а потом она берется из кэша, если надо - обновил. Кэш - это SharedObject - файл.
В принципе, когда очень много данных, то переработка структуры их хранения с целью оптимизации - хорошая идея.
Если же данные забиты в обычную плоскую таблицу большого объема и надо всю ее грузануть - как ни крути, все упрется в скорость железа в конечном итоге.