If table2 is really big and you run this update on regular base just make sure you have a covering index on pair x and field2 with field1 in include option, then put both x=z and a.field2=b.field2 to where clause.
You don't have to use subquery, just table straight forward, index will do the trick for you.
Create index <index name> on table2(x, field2) include(field1);
But include is available starting from v11.
If version of your PostgreSQL < 11, use with to express your subquery, then use it in join.