Опитахте ли да стартирате оригиналната заявка с TOP 1? най-вероятно ще бъде също толкова бавно.
Понякога, когато оптимизаторът смята, че нещо е много вероятно и ще върне огромен набор от данни с малко усилия (т.е. почти всички записи ще бъдат върнати), той избира най-вече циклични съединения, защото трябва да получи само първия и loop join е добро само за получаване на няколко записа. Когато това се окаже, че не е вярно, отнема цяла вечност и един ден, за да получите резултати.
Във вашия случай звучи като много рядко, така че този избор боли много. Опитайте вместо това да направите нещо като SELECT @count = COUNT(*) FROM ...
и след това проверка дали този брой е различен от нула.