sql >> Database >  >> RDS >> Sqlserver

Waarom staat er een soort in mijn uitvoeringsplan?

SQL Server heeft drie algoritmen om uit te kiezen wanneer het twee tabellen moet samenvoegen. De Nested-Loops-Join, de Hash-Join en de Sort-Merge-Join. Welke het selecteert, is gebaseerd op kostenramingen. In dit geval dacht het dat op basis van de informatie die het had, een Sort-Merge-Join de juiste keuze was.

In uitvoeringsplannen van SQL Server wordt een Sort-Merge opgesplitst in twee operators, de Sort en de Merge-Join, omdat de sorteerbewerking misschien niet nodig is, bijvoorbeeld als de gegevens al zijn gesorteerd.

Voor meer informatie over joins, bekijk hier mijn join-serie:http://sqlity.net/en/1146/a-join-a-day-introduction/ Het artikel over de Sort-Merg-Join is hier:http://sqlity.net/en/1480/a-join-a-day-the-sort-merge-join/

Om uw zoekopdracht sneller te maken, zou ik eerst naar indexen kijken. U hebt een aantal geclusterde indexscans in de query. Als je er een paar kunt vervangen door zoekt, ben je waarschijnlijk beter af. Controleer ook of de schattingen die SQL Server produceert overeenkomen met de daadwerkelijke rijtellingen in een daadwerkelijk uitvoeringsplan. Als ze ver weg zijn, maakt SQL Server vaak verkeerde keuzes. Dus het verstrekken van betere statistieken kan u ook helpen bij het opvragen van de prestaties.



  1. Oracle SQL voorbeelddatabase

  2. Hoe veel vergelijkbare kenmerken van een entiteit in een database vertegenwoordigen?

  3. MySQL-Python-installatie - Kon het ei niet bouwen

  4. Laravel join-query's AS