Not every execution plan containing an apply anti join with a Top (1) operator on its inner side will be problematic. Nevertheless, it is a pattern to recognise and one which almost always requires further investigation.
The four main elements to look out for are:
-
A correlated nested loops (apply) anti join
-
A Top (1) operator immediately on the inner side
-
A significant number of rows on the outer input (so the inner side will be run many times)
-
A potentially expensive subtree below the Top
Read the whole thing. This is a great way to wrap up the series.