KB2938462 - FIX: Ontbrekende of onjuiste informatie over ontbrekende indexen wordt geretourneerd wanneer u een query uitvoert in SQL Server 2014

Van toepassing op
SQL Server 2014 Developer - duplicate (do not use) SQL Server 2014 Enterprise - duplicate (do not use) SQL Server 2014 Standard - duplicate (do not use)

Symptomen

Stel dat u Microsoft SQL Server 2014 gebruikt. De volgende twee problemen kunnen zich voordoen die zijn opgenomen in de opmerkingen bij de release van SQL Server 2014:

  • Ontbrekende indexdetails rapporteren ten onrechte opgenomen kolommen voor een tabel die geoptimaliseerd is voor geheugen

    Probleem: als SQL Server 2014 een ontbrekende index voor een query detecteert in een tabel die is geoptimaliseerd voor geheugen, wordt een ontbrekende index gerapporteerd in de SHOWPLAN_XML, evenals in de ontbrekende index-DMV's, zoals sys.dm_db_missing_index_details. In sommige gevallen bevatten de ontbrekende indexgegevens opgenomen kolommen. Aangezien alle kolommen impliciet worden opgenomen in alle indexen van tabellen die zijn geoptimaliseerd voor geheugen, is het niet toegestaan om opgenomen kolommen met voor geheugen geoptimaliseerde indexen expliciet op te geven.

  • Bij ontbrekende indexdetails worden ontbrekende indexen weggelaten als er een hash-index bestaat maar deze niet geschikt is voor de query

    Probleem: als u een HASH-index hebt voor kolommen van een tabel die is geoptimaliseerd voor geheugen waarnaar wordt verwezen in een query, maar deze index niet kan worden gebruikt voor de query, wordt in SQL Server 2014 niet altijd een ontbrekende index gerapporteerd in SHOWPLAN_XML en in de DMV-sys.dm_db_missing_index_details.

    Met name als een query gelijkheidspredicaten bevat die betrekking hebben op een subset van de indexsleutelkolommen of als deze ongelijkheidspredicaten bevat die betrekking hebben op de indexsleutelkolommen, kan de HASH-index niet als zodanig worden gebruikt en zou een andere index nodig zijn om de query efficiënt uit te voeren.

Oorzaak

De problemen treden op omdat de ontbrekende indexlogica in het query-optimalisatieprogramma geen onderscheid maakt tussen de traditionele, niet-geclusterde indexen op schijftabellen en de nieuwe indextypen voor tabellen die geoptimaliseerd zijn voor geheugen.

Oplossing

De problemen werden voor het eerst opgelost in de volgende cumulatieve update van SQL Server. 

Cumulatieve update 1 voor SQL Server 2014 /nl-nl/help/2931693

Informatie over cumulatieve updates voor SQL Server

Elke nieuwe cumulatieve update voor SQL Server bevat alle hotfixes en alle beveiligingspatches die deel uitmaakten van de vorige cumulatieve update. Bekijk de meest recente cumulatieve updates voor SQL Server:

      

Tijdelijke oplossing

Gebruik de volgende tijdelijke oplossingen om deze problemen te omzeilen:

  • Tijdelijke oplossing: ontbrekende indexdetails rapporteren ten onrechte opgenomen kolommen voor een tabel die is geoptimaliseerd voor geheugen

    Geef de INCLUDE-component niet op voor indexen in tabellen die geoptimaliseerd zijn voor geheugen.

  • Tijdelijke oplossing voor probleem: ontbrekende indexdetails laten ontbrekende indexen weg als er een hash-index bestaat maar deze niet geschikt is voor de query

    Als u hash-indexen gebruikt, controleert u de query's en queryplannen om te bepalen of de query's voordeel kunnen halen uit Index Seek-bewerkingen op een subset van de indexsleutel, of Index Seek-bewerkingen op ongelijkheidspredicaten. Als u wilt zoeken naar een subset van de indexsleutel, gebruikt u een NONCLUSTERED index of een HASH-index voor precies die kolommen waarop u wilt zoeken. Als u moet zoeken naar een ongelijkheidspredaat, gebruik dan een NONCLUSTERED index in plaats van HASH.

Opmerking De tijdelijke oplossingen zijn afkomstig uit de releaseopmerkingen voor SQL Server 2014

Status

Microsoft heeft bevestigd dat dit een probleem is bij de Microsoft-producten die worden vermeld in het gedeelte 'Van toepassing op'.