(select 1 FROM b WHERE a˙ someval = b˙ someval); This is better and is the usual advice: it turns the antijoin condition into an inner join and then excludes. However the planner has less freedom with this approach and this can cause performance issues.
b USING (someval) WHERE b IS NULL; By treating the whole input tuple as NULL we can eliminate any matches in the outer join. This allows us to do effective antijoins which the planner can optimize, and we can use NULL to our advantage here.