Symptome
Angenommen, Sie haben Microsoft SQL Server 2017 oder 2019 installiert und wird mit der Standardmäßigen Kardinalitätsschätzung (Cardinality Estimation, CE) ausgeführt. Sie führen eine Abfrage mit einem Filter-Prädikat für Spalte Col1 aus. Abfrage-Prädikate verfügen über systeminterne UPPER-, LOWER- oder RTRIM-Funktionen. Col1 verfügt über Statistiken, die vom Optimierer verwendet werden sollen. In diesem Szenario können Sie ungenaue Kardinalitätsschätzungen beobachten und SQL Server einen ineffizienten Plan verwenden. Im Folgenden sind einige Abfragen aufgeführt, die Über Prädikate verfügen:
SELECT person_id FROM Person WHERE (E-Mail wie UPPER(N'@live.com%'))
SELECT person_id FROM Person WHERE (email = UPPER(N'msft@live.com'))
Status
Microsoft hat bestätigt, dass dies ein Problem bei den Microsoft-Produkten ist, die im Abschnitt „Gilt für“ aufgeführt sind.
Lösung
Dieses Problem wurde in den folgenden kumulativen Updates für SQL Server behoben:
Informationen zu kumulativen Updates für SQL Server:
Jedes neue kumulative Update für SQL Server enthält alle Hotfixes und alle Sicherheitsfixes, die im vorherigen kumulativen Update enthalten waren. Sehen Sie sich die neuesten kumulativen Updates für SQL Server an:
Hinweis Dieser Fix erfordert, dass eine der folgenden Aktionen wirksam wird:
- QUERY_OPTIMIZER_HOTFIXES datenbankbezogene Konfiguration auf ON festgelegt
- Verwenden des ENABLE_QUERY_OPTIMIZER_HOTFIXES USE HINT
- Aktivieren des Ablaufverfolgungsflags 4199
Referenzmaterial
Informieren Sie sich über die Terminologie, die Microsoft zum Beschreiben von Softwareupdates verwendet.