Зарегистрироваться | Поиск |
Результаты опроса: Как лучше хранить ссылки на записи - (RefTableId, Company, RefRecId) | |||
myTempTable - временная таблица |
![]() ![]() ![]() ![]() |
4 | 21.05% |
recordLinkList |
![]() ![]() ![]() ![]() |
2 | 10.53% |
map(DataAreaId, recordLinkList) |
![]() ![]() ![]() ![]() |
0 | 0% |
set([refTableId, refRecId, refCompanyId]) |
![]() ![]() ![]() ![]() |
3 | 15.79% |
map([refTableId, refCompanyId], set(refRecId)) |
![]() ![]() ![]() ![]() |
2 | 10.53% |
map(refTableId, map(refCompanyId, set(refRecId))) |
![]() ![]() ![]() ![]() |
1 | 5.26% |
другое - написал сообщение в теме |
![]() ![]() ![]() ![]() |
5 | 26.32% |
не знаю/мне все равно |
![]() ![]() ![]() ![]() |
2 | 10.53% |
Голосовавшие: 19. Вы ещё не голосовали в этом опросе |
|
Опции темы |
|
![]() |
#1 |
Moderator
|
8. Забыл про квазивременную таблицу. То есть - обычную таблицу в БД с полями RefTableId,refRecId,refCompanyId, в которую добавлен, например id сессии или просто GUID-какой-то. По завершении процедуры просто тупо оттуда удаляем записи по условию.
Лично я бы, (не знаю как обосновать, просто по личному опыту) использовал бы вариант 5, если предполагается что будет обработано не больше 10 тысяч записей и вариант 8 во всех остальных случаях. |
|
![]() |
#2 |
Участник
|
Цитата:
но на нее будет тратится recid. надо будет не забывать ее чистить... в общем, куча гемора. но согласен с тем, что просто временная таблица может тормозить при большом числе записей (больше нескольких десятков тысяч) |
|
![]() |
#3 |
Administrator
|
Я за вариант 8.
Цитата:
Цитата:
![]() А с очисткой как раз все просто. Нужно просто только на какой-то момент иметь завершенную работу этой утилитки (как вариант - остановка АОС). И тогда Truncate Table отрабатывает быстро и на ура. Можно туда добавить поле, аналог кода сессии - типа утилитка отработала один раз - все записи отметились одним кодом. Утилитка отработала второй раз - новые записи отметились другим кодом и т.д. По этому коду сделать индекс и чистить по индексу. Это если хочется чистить сразу. А можно этим и не заморачиваться - а дождаться возможности выполнить Truncate Table Конечно остановка АОС - решение радикальное ... Но тут все зависит от того будут ли перерывы у утилитки, насколько сильно она будет увеличивать кол-во записей в этой таблице. Пример 1. InventSumLogTTS. Ее можно честно чистить после остановке АОСа. Пример 2. Batch. Там хранится туева хуча мусора, и в нее постоянно складываются записи. Раз в некий период (когда ну очень хочется уменьшить место, занимаемое базой) нужные записи переливаются в копию Batch, исходная таблица грохается, а копия выдается за оригинал.
__________________
Возможно сделать все. Вопрос времени |
|
Теги |
recid, запись, как правильно, ссылки |
|
|