Привет народ.
Тут достали юзера решил воткнуть проверку на рекурсию при отпуске товара
благо не на процедурах и можно практически забыть про вложенность. Сделал
естественно, но сижу и думаю. Предпологаю что при такой проверке будут
проверятся кучи документов и чем дальше тем дольше будет это работать.
Сейчас это делаю так
получаю строки документа с которого буду списывать
на каждую строку получаю строки документов с которых было списание (и так до
тех пор пока null не встретися)
WITH RECURSIVE T001_TREE as (
select T003_1, T001_1, T001_1b FROM T001
where T001.T003_1 ='lxB+drce4BabY2lGRT5ha2'
union all
select D2.T003_1, D2.T001_1, D2.T001_1b
FROM T001 D1 join T001_TREE Db on D1.T001_1 = Db.T001_1b
join T001 D2 on D2.T003_1 = D1.T003_1)
select * from T001_TREE
Но в этом случае получается что всегда буду перечитывать ворох документов.
Решил проверить и действительно проверка 30000 строк прошла аж за 22 минуты
ужас. Когда идет проверка одной строки это еще ничего всего 0,044 но когда
проверка всего это жуть.
Поделитесь опытом мож еще чего подчерпну. Уровни здесь не прикрутить т.к.
вложенность бесконечна это просто строки документов ссылающиеся на приход.
Если сформировать таблицу кто к кому относится я думаю она скоро станет
таким слабым местом что даже чет в ее сторону пока недумается. Хотя тогда
будет все мгновенно отрабатывать.