Вход в базу данных является атомарной операцией. Таким образом, вы не можете показать индикатор выполнения. Вы можете показать индикатор ожидания (песочные часы) или неопределенный индикатор выполнения ( который на самом деле просто индикатор ожидания, который выглядит как индикатор выполнения).
Для запроса, который получает данные, вы можете показать прогресс, разбив страницу с наборами результатов. Есть несколько способов сделать это в зависимости от базы данных / ORM, которую вы используете. Общий принцип заключается в создании рабочего потока и получении данных по одной странице за раз. После того, как вы захватите страницу, переключите контекст в поток пользовательского интерфейса и обновите экран, чтобы показать, сколько данных вы захватили.