Как выполнить потоковую передачу строк из таблицы SQL Server в приложение .NET, используя 10000 фрагментов строк? - PullRequest
2 голосов
/ 27 июня 2011

У меня есть таблица с 300 миллионами строк в Microsoft SQL Server 2008 R2.Кластерный индекс в столбце даты [DataDate] означает, что вся таблица упорядочена по столбцу даты.

Как передать данные из этой таблицы в мое приложение .NET в 10000чанки строк?

Среда:

  • Использование C #.
  • Необходимо иметь возможность приостановить поток данных в любой точке, чтобы позволить клиенту обрабатывать строки.
  • К сожалению, нельзя использовать select * from, так как при этом будет выбрана вся таблица (ее 50 ГБ - она ​​не помещается в память).

Ответы [ 2 ]

6 голосов
/ 27 июня 2011

Вы можете запустить SELECT * FROM, а затем просмотреть результаты в SqlDataReader.

Это никогда не загрузит более одной строки в память одновременно; он будет загружать каждую строку при вызове Read().

0 голосов
/ 27 июня 2011

Вы можете использовать комбинацию следующего с LINQ to SQL :

Enumerable.Take функция возвращает указанное число смежных элементов от началаsequence.

Enumerable.Skip обходит указанное количество элементов в последовательности и затем возвращает остальные элементы.


См.:

Доступ к строкам в результате LINQ без цикла по каждому элементу?

Перечислимый класс LINQ, часть 2 - Позиционирование внутри последовательностей

LINQ с поддержкой пейджинга

...