Update: Leistungseinbußen bei Verwendung von Tabellenvariablen in SQL Server 2012 oder SQL Server 2014

Wichtig: Dieser Artikel wurde maschinell übersetzt und wird dann möglicherweise mithilfe des Community Translation Framework (CTF) von Mitgliedern unserer Microsoft Community nachbearbeitet. Weitere Informationen zu CTF finden Sie unter http://support.microsoft.com/gp/machine-translation-corrections/de.

Den englischen Originalartikel können Sie über folgenden Link abrufen: 2952444
Problembeschreibung
Wenn eine Tabellenvariable mit Zeilen füllen und dann mit anderen Tabellen verknüpfen können der Abfrageoptimierer ineffizienten Abfrageplanes langsame Leistung führen kann.
Lösung
Nach Installation dieses Hotfixes können Sie aktivieren das Ablaufverfolgungsflag 2453 ermöglichen eine Tabellenvariable Recompile auslösen, wenn genügend Zeilen geändert werden. Dadurch kann den Abfrageoptimierer effizienteren Plan.

Das Problem wurde erstmals im kumulativen Update behoben oder / und Service Packs für SQL Server.

Kumulative Update 3 für SQL Server 2014

Zu kumulativen Updates für SQL Server

Jedes neue kumulative Update für SQL Server enthält alle Hotfixes und alle Sicherheits-Updates, die im vorherigen kumulativen Update enthalten waren. Sehen Sie sich die neuesten kumulativen Updates für SQL Server an:

Servicepack 2 für SQL Server 2012

Informationen zu Servicepacks für SQL Server

Servicepacks sind kumulativ. Jedes neue Servicepack enthält alle Updates aus früheren Servicepacks sowie alle neuen Fixes. Unsere Empfehlung ist das neueste Servicepack und das neueste kumulative Update für dieses Servicepack anwenden. Sie müssen kein früheres Servicepack installieren, bevor Sie das neueste Servicepack installieren. Verwenden Sie Tabelle 1 im folgenden Artikel Weitere Informationen zum neuesten Servicepack und neuesten kumulativen Update:

Weitere Informationen
Bei Verwendung eine Table-Variable in einer Stapelverarbeitung oder Prozedur wird die Abfrage kompiliert und optimiert für leeren Ausgangszustand Tabellenvariable. Wenn diese Tabellenvariable mit vielen Zeilen zur Laufzeit aufgefüllt ist, möglicherweise vorkompilierten Abfrageplan nicht optimal. Beispielsweise kann die Abfrage beitreten eine Tabellenvariable mit nested Loops normalerweise effizienter für wenige Zeilen ist. Dieser Abfrageplan ist ineffizient, wenn die Tabellenvariable mehrere Millionen Zeilen verfügt. Ein Hash-Join möglicherweise besser unter dieser Bedingung. Um einen neuen Abfrageplan erhalten sie neu kompiliert werden muss. Im Gegensatz zu anderen Benutzer- oder temporäre Tabellen löst Zeile Anzahl Änderung eine Tabellenvariable jedoch keine Neukompilierung Abfrage. Normalerweise können Sie diese mit OPTION (RECOMPILE) umgehen die eigenen Gemeinkosten.
Das Ablaufverfolgungsflag 2453 ermöglicht den Vorteil der Abfrage Recompile ohne OPTION (RECOMPILE). Dieses Ablaufverfolgungsflags unterscheidet sich von der OPTION (RECOMPILE) zwei wesentliche Aspekte.
(1) verwendet dieselbe Anzahl von Zeilen wie andere Tabellen. Die Abfrage muss nicht für jede Ausführung im Gegensatz zur OPTION (RECOMPILE) kompiliert werden. Es würde Recompile ausgelöst, nur wenn der Zeile Anzahl geändert vordefinierten Schwellenwert überschreitet.
(2) OPTION (RECOMPILE) erzwingt die Abfrage Parameter verkürzt und die Abfrage optimieren. Dieses Ablaufverfolgungsflags erzwingt keine Parameter einsehen.

Hinweis dieses Ablaufverfolgungsflags muss zur Laufzeit AN sein. Sie können nicht mit QueryTraceOn dieses Ablaufverfolgungsflags verwenden. Dieses Ablaufverfolgungsflags muss mit Vorsicht verwendet werden, da es mehr Kostenersparnis durch bessere Optimierung Kosten Anzahl Abfrage Kompilierungen erhöhen kann.
Status
Microsoft hat bestätigt, dass es sich um ein Problem bei den Microsoft-Produkten handelt, die im Abschnitt "Eigenschaften" aufgeführt sind.

Warnung: Dieser Artikel wurde automatisch übersetzt.

Eigenschaften

Artikelnummer: 2952444 – Letzte Überarbeitung: 02/22/2016 06:52:00 – Revision: 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 KbMtde
Feedback