Эта часть
AND p.NUM_PROCESSO NOT IN (
SELECT d.num_processo FROM distribuicao d
WHERE d.COD_SERVIDOR in ('0','000')
AND d.num_distribuicao IN (
SELECT MAX(num_distribuicao) FROM Distribuicao GROUP BY num_processo
)
и эта часть
AND p.NUM_PROCESSO NOT IN (
SELECT num_processo FROM Anexos
)
будут самыми большими узкими местами в запросе, поскольку у вас есть вложенные подзапросы.
У вас также есть несколько из них:
SELECT MAX(id_vinc) FROM Distrib_VincJud where ativo = '1' GROUP BY num_processo)
SELECT MAX(num_distribuicao) FROM Distribuicao GROUP BY num_processo
Вы можете получить еще несколько секунд, если разрешить этим отдельным запросам сохранять результаты.
На самом деле, вам лучше иметь отдельную таблицу с этими значениями NOT IN (...), которая обновляется при каждой вставке в вашу базу данных. Все зависит от того, как часто вы выполняете каждый запрос.
Вы пытались запустить Оптимизатор запросов на них?