Тогда проктологически можно придумать.
Заведи отдельную таблицу с 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.
В общем, вполне нормальное решение, когда из массы ненужного хлама нужно
отобрать относительно небольшое количество активных элементов.