B(Da, Db)
Вероятно, индекс должен исправить любые проблемы с производительностью.
Однако ваш запрос неверен. При использовании DISTINCT ON
вам необходимо ORDER BY
:
INSERT INTO A (Da,Db)
SELECT DISTINCT ON (Da) Da, Db
FROM B
ORDER BY Da, Db
ON CONFLICT (Da) DO UPDATE SET Db = excluded.Db;