C# SQL-запрос отстает

Я разработал приложение, которое манипулирует данными из базы данных. Когда я запускаю приложение со своего ПК или компьютеров, находящихся рядом со мной (в моей компании, на том же сервере), оно работает нормально, но когда кто-то из той же компании, но с другого сервера (другой страны) пытается сделать то же самое, у него огромная задержка,

Я знаю, что запрос это немного "много":

SqlCommand command = new SqlCommand("SELECT * FROM dbo.Person", con)

Больше данных -> больше лагов

Но мне нужны все данные из базы данных, чтобы заполнить ListView, а затем экспортировать в документ Excel.

Вещи, которые я пробовал:

Я создал фонового работника, который будет выполнять эту команду, и когда работник завершит работу, я заполняю ListView такими данными:

private void ViewAllWorker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)    
{   
    while (Oreader.Read())
    {

        ListViewItem item = new ListViewItem(Oreader["ID"].ToString());

        item.SubItems.Add(Oreader["DecadeOfBirth"].ToString());
        // etc
    }
}

Что бы вы сделали в этом случае? Что может помочь уменьшить отставание? какой правильный подход?

2 ответа

Решение

Единственный правильный способ исправить это - уменьшить объем данных, которые вы возвращаете пользователю.

Позволь мне привести пример:

  • Ваша таблица содержит много строк, которые нужно экспортировать
  • Пользователь хочет просмотреть данные, а затем экспортировать их в Excel
  • Разрешить пользователю видеть частичные данные
    • Топ N записей
    • Фильтры (по имени пользователя, отделу, дате и т. Д.)
    • Пагинация (пропустить, взять)
  • Пользователь доволен увиденным, а затем хочет экспортировать все данные
  • Вы запускаете это на сервере и просто даете пользователю обратную связь о прогрессе

Если ваше приложение основано на IIS(например, ASP.NET), вы можете использовать Application Object и сохранить все данные из таблицы "Person" один раз при запуске приложения.

Другие вопросы по тегам