powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Производительность - LINQ to SQL versus List<> versus PredlozhitReshenie<%username%>()
6 сообщений из 6, страница 1 из 1
Производительность - LINQ to SQL versus List<> versus PredlozhitReshenie<%username%>()
    #38974756
13th
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть таблица, сотня тысяч записей, движок - MS Access 2003. PK - по трём полям типа NVARCHAR. Надо регулярно вставлять туда 5-7 тысяч записей, но из них 70-80% уже есть, не вставятся. Ну и естественно, решил перед вставкой делать проверку - есть запись, или нет. Пишу на C#, VS 2013.

Вопрос: как сделать проверку перед вставкой побыстрее - через LINQ to SQL или загрузить всё в память, и проверять по памяти? А может, можно как-то ещё сделать, без проверки? Вставка "в лоб" - с перехватом OleDbException уж очень медленно.
...
Рейтинг: 0 / 0
Производительность - LINQ to SQL versus List<> versus PredlozhitReshenie<%username%>()
    #38974813
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
13thЕсть таблица, сотня тысяч записей, движок - MS Access 2003. PK - по трём полям типа NVARCHAR. Надо регулярно вставлять туда 5-7 тысяч записей, но из них 70-80% уже есть, не вставятся. Ну и естественно, решил перед вставкой делать проверку - есть запись, или нет. Пишу на C#, VS 2013.

Вопрос: как сделать проверку перед вставкой побыстрее - через LINQ to SQL или загрузить всё в память, и проверять по памяти? А может, можно как-то ещё сделать, без проверки? Вставка "в лоб" - с перехватом OleDbException уж очень медленно.
не прощу в СУБД исключить существующие строки и вставить? чем городить такую ахинею, не знаю как в Access, а в mssql и ora всё для этого имеется
...
Рейтинг: 0 / 0
Производительность - LINQ to SQL versus List<> versus PredlozhitReshenie<%username%>()
    #38974827
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Т.к. MS Access по сути файл-сервер, то быстрее тащить на клиента всю таблицу и сравнивать клиентом.

Т.е. допустим у тебя ключ из трех полей f1,f2,f3
список новых подготавливаешь в памяти и сортируешь по (f1,f2,f3)
затем select f1,f2,f3 from MyTable order by f1,f2,f3

Дальше в один проход сравниваются оба набора. В результате получишь список того что надо добавить.

Для ускорения сравнений можно добавить поле с CRC32 записи. Получишь 32-битный почти уникальный хэш ключа. Считается быстро.
Тогда если CRC32 новой записи отсутствует - это однозначно скажет что запись новая, иначе досравнивать f1,f2,f3. Также сортировка и выборка по CRC32 будет быстрее чем по (f1,f2,f3)
...
Рейтинг: 0 / 0
Производительность - LINQ to SQL versus List<> versus PredlozhitReshenie<%username%>()
    #38975144
13th
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Roman Mejtes,

Ты имеешь ввиду сначала удалить дупликаты, а потом вставить всё?
...
Рейтинг: 0 / 0
Производительность - LINQ to SQL versus List<> versus PredlozhitReshenie<%username%>()
    #38975151
13th
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dima T,

Чёт я про сортировку не подумал. Тогда да, получается в один проход. Спасибо, хорошая идея.
...
Рейтинг: 0 / 0
Производительность - LINQ to SQL versus List<> versus PredlozhitReshenie<%username%>()
    #38975155
13th
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Roman Mejtes,

ты не понял вопроса. Вопрос не в том, "как сделать?". Способов сделать - много. Вопрос - "какой способ технологичнее?". Ты, если не знаком с MS Access, ничем не поможешь. Твой вариант приведёт к разрастанию БД и потребует регулярного сжатия базы, что тоже не совсем подходит.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Производительность - LINQ to SQL versus List<> versus PredlozhitReshenie<%username%>()
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]