sql >> Database teknologi >  >> RDS >> Sqlserver

LEFT JOIN Betydeligt hurtigere end INNER JOIN

Venstre join ser ud til at være hurtigere, fordi SQL er tvunget til at foretage det mindre valg først og derefter joine dette mindre sæt af poster. Af en eller anden grund ønsker optimeringsværktøjet ikke at gøre dette naturligt.

3 måder at tvinge joins til at ske i den rigtige rækkefølge:

  1. Vælg den første delmængde af data i en midlertidig tabel (eller tabelvariabel), og kom derefter med på den
  2. Brug venstre joinforbindelse (og husk, at dette kan returnere forskellige data, fordi det er en venstre joinforbindelse ikke en indre joinforbindelse)
  3. brug søgeordet FORCE ORDER. Bemærk, at hvis tabelstørrelser eller skemaer ændres, er forespørgselsplanen muligvis ikke korrekt (se https://dba.stackexchange.com/questions/45388/forcing-join-order )


  1. Hvordan fremhæver man rækker, hvis de indeholder dublerede data?

  2. Hvordan kan jeg indsætte JSON-objekt i Postgres ved hjælp af Java readyStatement?

  3. Returnerer flere rækker fra forespørgende XML-kolonne i SQL Server 2008

  4. sqlcmd med outputfil og skærmoutput