sql >> Database >  >> RDS >> Sqlserver

Tabel gewaardeerde functie Killing My Query Performance

Als u een tabelvariabele retourneert, wordt het een functie met tabelwaarde met meerdere instructies en kan slecht zijn voor de prestaties vanwege het feit dat het als een tabel wordt behandeld, behalve dat er geen statistieken beschikbaar zijn voor SQL Server om een ​​goed uitvoeringsplan op te baseren - dus het zal de functie schatten als het retourneren van een zeer klein aantal rijen. Als het een groter aantal rijen retourneert, kan het gegenereerde plan daarom veel minder dan optimaal zijn.

Terwijl het retourneren van alleen een SELECT het een inline tabelwaardefunctie maakt - beschouw het meer als een uitzicht. In dit geval worden de werkelijke onderliggende tabellen in de hoofdquery opgenomen en kan een beter uitvoeringsplan worden gegenereerd op basis van goede statistieken. U zult merken dat in dit geval het uitvoeringsplan de functie helemaal NIET vermeldt, omdat het in feite de functie in de hoofdquery heeft samengevoegd.

Er is een geweldige referentie over op MSDN door CSS SQL Server Engineers inclusief (offerte):



  1. Een Enum-veld wijzigen met Alembic

  2. SSRS 2014 rapport implementatieprobleem

  3. Named Query, Native Query of Criteria API

  4. spring security login werkt niet met oracle