|
Firebird 3 и очень большая таблица
|
|||
---|---|---|---|
#18+
Собственно в некоторых таблицах БД нужно заполнить одно поле. использую код: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
На маленьких таблицах 200000 - 300000 записей, всё отрабатывает нормально. А вот на больших сия конструкция отваливается с ошибкой Out of memory. Собственно как забороть? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.12.2017, 11:02 |
|
Firebird 3 и очень большая таблица
|
|||
---|---|---|---|
#18+
petvvСобственно в некоторых таблицах БД нужно заполнить одно поле. использую код: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
На маленьких таблицах 200000 - 300000 записей, всё отрабатывает нормально. А вот на больших сия конструкция отваливается с ошибкой Out of memory. Собственно как забороть? выкинуть IBTable и использовать IBQuery для получения данных и для update ... |
|||
:
Нравится:
Не нравится:
|
|||
04.12.2017, 11:05 |
|
Firebird 3 и очень большая таблица
|
|||
---|---|---|---|
#18+
1. выкинуть прогресс бар, если ОЧЕНЬ его хочется апдейтить 1 раз на 1000 или 10000 строк 2. см. выше уже сказано про выкинуть ибтэйбл. 3. вместо IBTable1.Edit; IBTable1.Post; IBTable1.Next; применить запрос с кляузой update ... set ... IBQuery.Prepare (перед циклом) потом в цикле IBQuery.Params[i].AsЯвныйТипПоля := ... IBQuery.ExecQuery; ... |
|||
:
Нравится:
Не нравится:
|
|||
04.12.2017, 12:09 |
|
|
start [/forum/topic.php?fid=40&fpage=38&tid=1561318]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
36ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
40ms |
get tp. blocked users: |
1ms |
others: | 306ms |
total: | 424ms |
0 / 0 |