Microsoft SQL выборка большого обьема
От: Svoyak  
Дата: 08.12.14 20:38
Оценка:
Добрый день!Имею очень небольшой опыт работы с бд. Поставили мне такую задачу. База 50-70млн записей(idclient(int), idtown(int), pkey(int)) нужно загнать ее из файла в
СУБД( я выбрал Microsoft SQL)и после осуществлять поиск с выборкой, есно при таком размере придется во первых смотреть на скорость работы. Я использовал EF6(единственное на чем был какойто опыт),
для ускорения загрузки прикрутил расширение для Bulk операций, вообщем база создается минуты за 3 из файла, я думаю это нормально. Теперь вот вопрос в том как бы с ней работать. Собственно суть задачи заключается в том,
чтобы в этой огромной базе найти такой idtown, с которым встречается максимальное количество записей. Вариантов idtown — 30000(они в отдельной таблице), есть idtown
у которых нет ни одной записи, есть такие у которых — тысячи. Можно конечно просто перебирать их, т.е. брать idtown запросить записи для него и сравнивать их количество с предыдущим запрошенным и сохранять наибольший.
Но есть техн. нюанс для одного из idtown возвращается 6.5 млн записей и программа падает с OutofMemoryException. Подскажите как победить это? Запрос записей для
конкретного idtown выглядит так var pys = (from py in te.pays.Where(py => py.IDtown == idtown) select py).ToList(); Может есть еще варианты как сделать быстрей? и как победить
выборку 6.5 млн записей? чтоб не падало, в принципе можно сначала получить количсетво записей а потом както выбирать по частям чтоли. Но вот как — не пойму, Take() выбирает только с начала
а как выбрать какойто кусок дальше не понятно. или может быть есть другой подход?
Спасибо за помощь.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.