Dla zapytania potrzebujesz indeksu xml_files("purchaseNumber", "docPublishDate" desc) :
create index idx_xml_files_2 on xml_files("purchaseNumber", "docPublishDate" desc)
Postgres powinien używać tego indeksu do order by , co ułatwia distinct on .
Chociaż nie wpłynie to na wydajność, sugerowałbym również uproszczenie where klauzula do:
where parsing_status IS NULL