|
|
|
Проверка дубликатов при импорте
|
|||
|---|---|---|---|
|
#18+
Задача такая - перенести данные из таблицы-источника одний СУБД в целевую таблицу другой СУБД, не создав при этом записей-дубликатов в целевой таблице. проверка проходит по совокупности столбцов. Пробовал выгружать источник и целевую таблицу в DataTable и сравнивать каждую запись источника со всей целевой таблицей....получается очень долго (в источнике и целевой таблицах по миллиону записей). Использовал и DataTable.Select и DataTable.Rows.Find и foreach. (Очень удивился, когда Select отработал медленнее, чем foreach). Пробовал делать запрос в БД на импорт каждой записи из источника, что получилось не быстрее, чем первый вариант. Как можно еще ускорить процесс переноса? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2007, 14:47 |
|
||
|
Проверка дубликатов при импорте
|
|||
|---|---|---|---|
|
#18+
СУБД какая? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2007, 14:59 |
|
||
|
Проверка дубликатов при импорте
|
|||
|---|---|---|---|
|
#18+
Если проверка на повтор осуществляется по совокупности столбцов, то можно создать хеш-таблицу, у которой в качестве ключей будет сумма всех значений полей результирующей таблицы, приведенной к типу string. Далее при добавлении нужно использовать метод HashTable.ContainsKey(object Key). Этот метод работает очень быстро и вся операция займет всего два цикла. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2007, 15:39 |
|
||
|
|

start [/forum/topic.php?fid=17&msg=34581447&tid=1352764]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
155ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
36ms |
get tp. blocked users: |
1ms |
| others: | 231ms |
| total: | 463ms |

| 0 / 0 |
