SQL Server har tre algoritmer att välja mellan när den behöver ansluta två tabeller. The Nested-Loops-Join, Hash-Join och Sort-Merge-Join. Vilken den väljer baserar den på kostnadsuppskattningar. I det här fallet ansåg det att baserat på den information den hade tillgänglig var en Sort-Merge-Join det rätta valet.
I SQL Server-exekveringsplaner delas en Sortering-Merge upp i två operatorer, Sortera och Merge-Join, eftersom sorteringsoperationen kanske inte är nödvändig, till exempel om data redan är sorterad.
För mer information om joins, kolla in min join-serie här:http://sqlity.net/en/1146/a-join-a-day-introduction/ Artikeln om Sort-Merg-Join finns här:http://sqlity.net/en/1480/a-join-a-day-the-sort-merge-join/
För att göra din fråga snabbare skulle jag först titta på index. Du har ett gäng klustrade indexskanningar i frågan. Om du kan byta ut några av dem med sökningar kommer du troligen att bli bättre. Kontrollera också om uppskattningarna som SQL Server producerar matchar det faktiska antalet rader i en verklig exekveringsplan. Om de är långt borta gör SQL Server ofta dåliga val. Så att tillhandahålla bättre statistik kan också hjälpa dig att fråga efter prestanda.