Korriger: Dårlig ytelse når du bruker tabellvariabler i SQL Server 2012 eller SQL Server-2014

VIKTIG: Denne artikkelen ble oversatt med maskinoversettelsesprogramvare fra Microsoft og muligens redigert av Microsoft Community via CTF-teknologi i stedet for av en oversetter. Microsoft tilbyr både menneskelig oversatte og maskinoversatte/Community-redigerte artikler, slik at du får tilgang til alle artiklene i vår Knowledge Base på ditt eget språk. En maskinoversatt eller Community-redigert artikkel er imidlertid ikke alltid perfekt. Den kan inneholde feil i vokabular, syntaks eller grammatikk, mye likt en fremmedspråklig som forsøker å snakke språket ditt. Microsoft har ikke ansvar for unøyaktige opplysninger, feil eller skade forårsaket av feilaktig oversettelse av innholdet eller kundenes bruk av informasjonen. Microsoft oppdaterer jevnlig maskinoversettelsesprogramvaren og -verktøyene for å forbedre redigering av maskinoversatte tekster.

Den engelske versjonen av denne artikkelen er den følgende: 2952444
Symptom
Når du fyller ut en tabellvariabel med mange rader og koble den deretter sammen med andre tabeller, kan spørringsoptimaliseringen velger en ineffektiv spørringsplan, som kan føre til treg ytelse for spørringen.
Løsning
Når du har installert denne hurtigreparasjonen, kan du aktivere sporingsflagg 2453 å tillate en tabellvariabelen til å utløse ny kompilering nok antall rader som er endret. Dette kan tillate at spørringsoptimaliseringen velger en mer effektiv plan.

Problemet ble først løst i den kumulative oppdateringen for følgende eller / og oppdateringspakker for SQL Server.

Samleoppdatering 3 for SQLServer-2014

Om kumulative oppdateringer for SQL Server

Hver nye kumulative oppdateringen for SQL Server inneholder alle hurtigreparasjonene og alle sikkerhetsreparasjoner som fulgte med den forrige kumulative oppdateringen. Sjekk ut de nyeste kumulative oppdateringene for SQL Server:

Service pack 2 for SQL Server 2012

Om oppdateringspakker for SQL Server

Oppdateringspakker er kumulative. Hver nye oppdateringspakke inneholder alle reparasjonene som finnes i tidligere oppdateringspakker, sammen med eventuelle nye reparasjoner. Vår anbefaling er å bruke den nyeste oppdateringspakken, og den nyeste kumulative oppdateringen for denne oppdateringspakken. Du trenger ikke å installere en tidligere oppdateringspakke før du installerer den nyeste oppdateringspakken. Bruk tabell 1 i følgende artikkel for å finne mer informasjon om den nyeste oppdateringspakken og nyeste kumulative oppdateringen:

Mer informasjon
Når du bruker en tabellvariabelen i et parti- eller prosedyre, er spørringen kompilert og optimalisert for den første tomme statusen for tabellvariabelen. Hvis denne tabellvariabelen fylles ut med mange rader under kjøring, kanskje tidligere kompilerte spørringsplanen ikke lenger optimal. Hvis du for eksempel spørringen kanskje av sammenføyde en tabellvariabel med en nestet løkke fordi det er vanligvis mer effektivt for lite antall rader. Denne spørringsplanen kan være ineffektiv Hvis tabellvariabelen har millioner av rader. En hash-sammenføyning kan være et bedre valg under slike betingelse. Hvis du vil ha en ny spørringsplan, må det bli kompilert på nytt. I motsetning til andre brukere eller midlertidige tabeller, utløser rad antall endringer i en tabellvariabelen ikke en ny spørring-kompilering. Vanligvis kan du omgå dette med ALTERNATIVET (REKOMPILERING), som har sin egen indirekte kostnad.
Sporingsflagg 2453 gjør at fordelen med ny spørring kompilering uten ALTERNATIVET (REKOMPILERING). Denne sporingsflagg er forskjellig fra ALTERNATIVET (REKOMPILERING) i to primære aspekter.
(1) bruker samme rad antall terskelen som andre tabeller. Trenger ikke spørringen som skal kompileres for hver kjøring i motsetning til ALTERNATIVET (REKOMPILERING). Det vil utløse ny kompilering bare når antall radendringen overskrider terskelen som er forhåndsdefinerte.
(2) ALTERNATIVET (REKOMPILERING) tvinger spørringen til å kikke parametere og optimalisere spørringen for dem. Denne sporingsflagg tvinger ikke parameteren kikke.

Merk denne sporingsflagg må være videre ved kjøretid. Du kan ikke bruke denne sporingsflagg med QUERYTRACEON. Denne sporingsflagg må brukes med forsiktighet, fordi det kan øke antall nye kompileringer spørring som kan koste mer enn besparelser fra bedre spørringsoptimalisering av.
Status
Microsoft har bekreftet at dette er et problem i Microsoft-produktene som er oppført i delen "Gjelder for".

Advarsel: Denne artikkelen er autooversatt

Egenskaper

Artikkel-ID: 2952444 – Forrige gjennomgang: 02/22/2016 07:03:00 – Revisjon: 3.0

Microsoft SQL Server 2012 Service Pack 2, Microsoft SQL Server 2014 Developer, Microsoft SQL Server 2014 Enterprise, Microsoft SQL Server 2014 Standard

  • kbqfe kbfix kbsurveynew kbexpertiseadvanced kbmt KB2952444 KbMtno
Tilbakemelding