KB3150152 – ÅTGÄRDAT: Beräknat antal rader beräknas felaktigt för ett predikat som involverar en unik GUID-kolumn i SQL Server 2014 eller 2016

Gäller för
SQL Server 2014 Developer - duplicate (do not use) SQL Server 2014 Enterprise - duplicate (do not use) SQL Server 2014 Standard - duplicate (do not use) SQL Server 2016 Developer - duplicate (do not use) SQL Server 2016 Enterprise - duplicate (do not use) SQL Server 2016 Standard - duplicate (do not use)

Symptom

Tänk dig följande scenario:

  • Du har en fråga som använder ett predikat som inte är likhetspredikat i en unik GUID-kolumn i SQL Server 2014 eller 2016.
  • Statistiken uppdateras med standardsampling. Eller så infogas nya rader i tabellen efter den senaste statistikuppdateringen.
  • SQL Server använder den nya kardinalitetsberäknaren där databaskompatibilitetsläget är inställt på 120.
  • GUID-värdena är ojämnt fördelade i tabellen.

I det här scenariot kan du få dåliga prestanda när du kör frågan på grund av felaktigt uppskattade antal rader för predikatet i frågeplanen.

Lösning

Det här problemet åtgärdades först i följande kumulativa uppdatering för SQL Server:

Kumulativ uppdatering 6 för SQL Server 2014 Service Pack 1
        
         Kumulativ uppdatering 1 för SQL Server 2016
        
        
När du har installerat det här kumulativa uppdateringspaketet måste du aktivera spårningsflagga 4199. För att göra detta kan du lägga till startparametern -T4199. Eller så kan du använda instruktionen dbcc traceon(4199) för en specifik session.

Om kumulativa uppdateringar för SQL Server

Varje ny kumulativ uppdatering för SQL Server innehåller alla snabbkorrigeringar och alla säkerhetskorrigeringar som ingick i den tidigare kumulativa uppdateringen. Kolla in de senaste kumulativa uppdateringarna för SQL Server:

Senaste kumulativa uppdateringen för SQL Server 2014
        
Senaste kumulativa uppdateringen för SQL Server 2016

Status

Microsoft har bekräftat att detta är ett problem i de Microsoft-produkter som anges i avsnittet "Gäller".

Referenser

Läs mer om den terminologi som Microsoft använder för att beskriva programuppdateringar.