OriginalGriff
Чтобы добавить к тому, что Дейв правильно сказал, то, что вы делаете, все равно не извлекает 1 000 000 записей - вместо этого он пытается извлечь 2 000 000!
sqlconn1.Open()
sqladaptor.SelectCommand = New SqlCommand("Select * from Profile, sqlconn1)
sqladaptor.SelectCommand.CommandTimeout = False
sqladaptor.SelectCommand.ExecuteNonQuery()
sqladaptor.Fill(dt)
sqlconn1.Close()
sqlconn1.Dispose()
sqladaptor.Dispose()
Эта линия:
sqladaptor.SelectCommand.ExecuteNonQuery()
Выполняет вашу команду SQL, что означает, что SQL подготавливает 1 000 000 строк для возврата и возвращает количество найденных строк.
Затем эта строка:
sqladaptor.Fill(dt)
Делает это снова, сохраняя все 1 000 000 строк в DataTable.
Если бы вы попытались найти менее эффективный способ сделать что-нибудь, это, вероятно, было бы так!
И, пожалуйста, не используйте
SELECT * FROM
- всегда есть список строк, которые вы хотите в порядке, вы хотите их:
SELECT Column1, Column2 FROM ...
это сокращает объем данных, которые вы хотите извлечь, до минимума, возвращая только столбцы, которые вы собираетесь использовать - а изображения, например, могут занимать значительное пространство, - и делает ваш код моим "надежным" в случае изменений базы данных.
Но главное, что нужно убрать из этого, как говорит Дэйв: никогда не пытайтесь представить пользователю более ста или около того строк: страница, Поиск, фильтр - но подумайте, как пользователь на мгновение: как вы собираетесь найти строку, которая вас интересует, из 1 000 000 строк, нанесенных на ваш экран? Сколько времени вам понадобится, чтобы прокрутить вниз так далеко?
Делайте это по-своему, и ваши пользователи возненавидят ваше приложение, а значит, и вас самих.
Member 11856456
Я вижу, что он создает 2 000 000, потому что те же самые данные в базе данных плюс datatable, который я заполнил. Я также должен был объяснить, что заполненная таблица данных находится только в памяти и не отображается. его просто нужно сравнивать в фоновом режиме при поиске совпадающих данных, когда кто-то импортирует файл excel. Я соединю вашу информацию с тем, что получил от Дэйва. Спасибо вам обоим!
OriginalGriff
Это не имеет значения, он все еще использует глупый объем данных, и это подчеркивает SQL server, его пропускную способность и ваше приложение.
Вместо того чтобы читать все это, используйте предложения SQL WHERE для извлечения только тех данных, которые вам нужны, когда они вам нужны. Это имеет дополнительное преимущество-быть в курсе изменений, вносимых другими пользователями той же базы данных.