|
|
|
Быстрое добавление строк в таблицу (только уникальных)
|
|||
|---|---|---|---|
|
#18+
Быстрое добавление строк в таблицу Уникальных строк Задача. Есть массив строк, которые нужно добавить в таблицу. Обычно их около 500 длиной около 8 байт каждая. Причем добавлять нужно не все подряд, а только те, которых еще нет в таблице. С "просто добавлением" все просто - следующий код добавляет их за 0.233 секунды. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. А с проверкой на отсутствие получалось не менее 30 секунд. Быстрее всего получается, если обрабатывать исключение OleDbException (указав соотв. поле индексированным с непосторяющимися значениями), а не посылатьдополнительный SELECT-запрос на присутствие. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. А знаете ли Вы, как сделать еще быстрее. Хотя бы до 5 секунд снизить время. Заранее спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2006, 16:37 |
|
||
|
Быстрое добавление строк в таблицу (только уникальных)
|
|||
|---|---|---|---|
|
#18+
1. Так почему не воспользоваться тем способом, что вы описали? Создать констрейнт в БД, который и будет следить за уникальностью. 2. Если данных в таблице немного, то можно загрузить их все в приложение и отсеить неуникальные значения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2006, 19:09 |
|
||
|
Быстрое добавление строк в таблицу (только уникальных)
|
|||
|---|---|---|---|
|
#18+
1. Первый способ достаточно медленный. В таблице всего 500 записей. Для добавления еще 500 тратится около 30 секунд. В таблице же будет около 20 млн. строк. 2. 20 млн. * 8 байт = 200МБ. Мне мало, а кому-то много. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2006, 09:05 |
|
||
|
|

start [/forum/topic.php?fid=17&msg=33840821&tid=1353252]: |
0ms |
get settings: |
8ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
61ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
37ms |
get tp. blocked users: |
1ms |
| others: | 197ms |
| total: | 337ms |

| 0 / 0 |
