Тогда проктологически можно придумать.
Заведи отдельную таблицу с 1м полем ID, и там "проблеммные" отслеживай на триггере.
То есть при изменении состояния документа пиши туда или удаляй.

select d.*
from PROBLEM_DOCUMENTS pd
join DOCUMENTS d on p.ID=d.ID

запрос пойдет по малой таблице и сджойнится по PK к DOCUMENTS

можно это решение в Юмор )))

Совсем не юмор, а вполне нормальное решение. У меня например в отдельной табличке ID-шки "активного" товара в наличии (остаток в партии которого еще не истощился и его можно забирать). Когда партия расходуется - ID из этой таблички удаляется. Приходит новая партия или остаток появляется - ID закидывается в эту табличку. Она полностью на триггерах работает. Аналогично можно и для документов делать - пока они не закрыты, активны - их ID в какой-то табличке сидят. Как переводятся в закрытое состояние (в архив) - ID удаляется. Ну а выборка активных документов - это join с отобранными ID. В общем, вполне нормальное решение, когда из массы ненужного хлама нужно отобрать относительно небольшое количество активных элементов.

Ответить