1. query runs for 4-5 seconds on v16 and less than a second on v15
Yeah, that's a big regression. Seeing the actual EXPLAIN ANALYZE output for both systems would be very helpful to us. Also nice to see the plan if you do a
SET enable_incremental_sort=0;
before running the query
I wonder if materializing things might help, something like
with
x as (select id, unnest(string_to_array(emp,';')) as token, refdate from terr),
y as (select id, unnest(string_to_array(emp,';')) as token from employee)
select distinct x.id, y.id, refdate from x join y using (token);