DataAdapter.Fill слишком медленно - PullRequest
4 голосов
/ 04 января 2012

Я знаю, что у DataAdapters есть проблемы с производительностью, но есть ли способы обойти это быстрее?На данный момент метод DataAdapter.Fill занимает 5-6 секунд на 3000 записей, что слишком медленно для моего приложения.Если я удаляю строку Fill и просто выполняю SQL (используя SQLCE), это займет 20 миллисекунд, поэтому я предполагаю, что запрос не является проблемой.Я попытался добавить BeginLoadData в таблицу данных, но это никак не повлияет на производительность.

 using (SqlCeConnection con = new SqlCeConnection(conString))
 {
       con.Open();
       using (SqlCeDataAdapter dAdapter= new SqlCeDataAdapter())
       {

          using (SqlCeCommand com = new SqlCeCommand(query, con))
          {
               com.Parameters.Add("uname", textBox1.Text);
               dAdapter.SelectCommand = com;
               dAdapter.SelectCommand.Connection = con;

               DataTable dTable = new DataTable();


               dAdapter.Fill(dTable);

               dataGridView1.DataSource = dTable;


           }
       }
  }

Есть ли лучшие способы заполнить DataGridView или ускорить метод Fill?

Ответы [ 3 ]

1 голос
/ 04 января 2012

основная проблема заключается в загрузке 3000 для пользователя одновременно.Независимо от того, как загрузить 300 записей, количество данных является проблемой.реализовать подкачку в запросе sql, чтобы позволить пользователю просматривать подмножество записей.пользователь может перейти к большему количеству записей, когда это необходимо.

1 голос
/ 04 января 2012

Вместо этого вы могли бы связать DataGridView с DataReader, но это может быть не намного лучше, поскольку загрузка 3000 строк в DataGridView не очень быстрая.

0 голосов
/ 04 января 2012

Использовать BatchUpdate / BatchInsert. Убедитесь, что вы указали UpdateBatchSize = 3000 (количество записей)

Вот пример того, как это сделать: BatchInsert

...