Я уже некоторое время разрабатываю небольшие приложения для баз данных в Visual Studio C#. В настоящее время я использую VS 2010. До недавнего времени все приложения запускались на том же компьютере, на котором была сохранена база данных, и все прошло отлично. Недавно мне пришлось начать разработку некоторых приложений, которые будут запускаться на отдельном компьютере, который находится в одной локальной сети.Очень медленные запросы в локальной сети в приложениях C#
Простой, но я столкнулся с проблемой при запуске запросов для заполнения элементов управления, таких как сетка или даже поле со списком. Проблема в том, что он может занять 15-30 секунд за элемент управления, если мой запрос вытаскивает большой объем данных. Я знаю, это связано с тем, что приложение отправляет мой запрос на выбор, ожидая, когда все результаты попадут в сеть, а затем отобразит информацию. Проблема в том, что я не знаю, что с этим делать.
Ниже у меня есть фрагмент кода (слегка измененный, чтобы иметь больше смысла). Он использует базу данных Firebird, хотя я использую MSSQL и Sybase Advantage, а также с теми же результатами.
FbConnection fdbConnect = new FbConnection();
fdbConnect.ConnectionString = Program.ConnectionString;
fdbConnect.Open();
FbCommand fcmdQuery = new FbCommand();
fcmdQuery.Connection = fdbConnect;
fcmdQuery.CommandText = "select dadda.name, yadda.address, yadda.phone1 from SOMETABLE left join yadda on dadda where yadda.pk = dadda.yaddapk";
FbDataAdapter fdaDataSet = new FbDataAdapter(fcmdQuery);
DataSet dsReturn = new DataSet();
fdaDataSet.Fill(dsReturn);
fdbConnect.Close();
DataGridView1.DataSource = dsReturn.Tables[0];
Есть ли у кого-нибудь предложения о том, как я могу ускорить это?
Сколько стоит «большой объем данных»? Вы определили узкое место (сеть, БД, что-то еще)? – Oded
Также, какие базы данных? Такие бэкэнды, как Access (.MDB), как правило, медленны при доступе по сети. – CodingGorilla
@ Кодирование Горилла: Жар-птица ... ТАК упомянула об этом. – Reniuz