KB2952444: de prestaties zijn slecht wanneer u tabelvariabelen gebruikt in SQL Server 2012 of SQL Server 2014

Symptomen

Wanneer u een tabelvariabele met een groot aantal rijen in een tabel samenvoegt en deze vervolgens verbindt met andere tabellen, kunt u met de query Optimizer een inefficiënt queryplan kiezen, dat kan leiden tot trage queryprestaties.

Elke nieuwe cumulatieve update voor SQL Server bevat alle hotfixes en alle beveiligingsoplossingen die zijn opgenomen in de vorige cumulatieve update. Bekijk de nieuwste cumulatieve updates voor SQL Server:

Service Pack 2 voor SQL Server 2012

Service packs zijn cumulatief. Elk nieuw Service Pack bevat alle correcties in eerdere service packs, samen met eventuele nieuwe oplossingen. We raden u aan het meest recente Service Pack en de nieuwste cumulatieve update voor dat Service Pack toe te passen. U hoeft geen vorig Service Pack te installeren voordat u het nieuwste Service Pack installeert. Gebruik tabel 1 in het volgende artikel voor meer informatie over de meest recente Service Pack en de nieuwste cumulatieve update:

De versie, de editie en het update niveau van SQL Server en de bijbehorende onderdelen bepalen

Meer informatie

Wanneer u een tabelvariabele gebruikt in een batch of procedure, wordt de query gecompileerd en geoptimaliseerd voor de aanvankelijke lege status van tabelvariabelen. Als deze tabelvariabele met veel rijen tijdens de uitvoering is ingevuld, is het mogelijk dat het voorgecompileerde query-abonnement niet meer optimaal is. U kunt bijvoorbeeld een tabelvariabele met een geneste lus verbinden, aangezien de query meestal efficiënter is voor een klein aantal rijen. Dit queryplan kan onefficiënt zijn als de tabelvariabele miljoenen rijen bevat. Een hash-koppeling kan onder deze voorwaarde een betere keuze zijn. Als u een nieuw queryplan wilt maken, moet dit opnieuw worden gecompileerd. In tegenstelling tot andere gebruikers of tijdelijke tabellen, verandert de wijziging van het aantal rijen in een tabelvariabele niet als een query opnieuw wordt gecompileerd. U kunt dit meestal omzeilen met de optie optie (hercompilatie), waarvan de eigen overheadkosten gelden. De traceringsvlag 2453 biedt de voordelen van het opnieuw compileren van query's zonder optie (opnieuw COMPILERen). Deze traceringsvlag wijkt af van de optie van de optie (hercompilatie) in twee hoofd overwegingen. (1) de drempelwaarde voor het aantal rijen wordt gebruikt als andere tabellen. De query hoeft niet te worden gecompileerd voor elke optie voor het uitstellen van een uitvoering. Het compileerprogramma wordt alleen opnieuw gecompileerd wanneer de wijziging van het aantal rijen groter is dan de vooraf gedefinieerde drempelwaarde. (2) optie (opnieuw COMPILERen) zorgt ervoor dat de query parameters uitstelt en de query voor ze optimaliseert. Deze traceringsvlag dwingt geen parameter te zien.Opmerking deze traceringsvlag moet zijn ingeschakeld in runtime. U kunt deze traceringsvlag niet gebruiken met QUERYTRACEON. Deze traceringsvlag moet wees voorzichtig met het vergroten, omdat het aantal query's opnieuw kan worden gecompileerd, wat meer kosten kost dan besparingen met een betere query optimalisering.

Status

Microsoft heeft bevestigd dat dit probleem zich kan voordoen in de Microsoft-producten die worden vermeld in de sectie Van toepassing op.

Meer hulp nodig?

Uw vaardigheden uitbreiden
Training verkennen
Als eerste nieuwe functies krijgen
Deelnemen aan Microsoft insiders

Was deze informatie nuttig?

Bedankt voor uw feedback.

Hartelijk dank voor uw feedback! Het lijkt ons een goed idee om u in contact te brengen met een van onze Office-ondersteuningsagenten.

×