KB2938462 – POPRAVKA: Nedostajuće ili pogrešne informacije o indeksima koje nedostaju vraćaju se prilikom upita u programu SQL Server 2014

Primenjuje se na
SQL Server 2014 Developer - duplicate (do not use) SQL Server 2014 Enterprise - duplicate (do not use) SQL Server 2014 Standard - duplicate (do not use)

Simptomi

Pretpostavimo da koristite Microsoft SQL Server 2014. Možete naići na sledeća dva problema koja su uključena u napomene uz izdanje za SQL Server 2014:

  • Detalji indeksa koji nedostaju pogrešno, izveštavanje o uključenim kolonama za tabelu optimizovanu za memoriju

    Problem: Ako SQL Server 2014 otkrije indeks koji nedostaje za upit u tabeli optimizovanoj za memoriju, on će prijaviti indeks koji nedostaje u SHOWPLAN_XML, kao i u DMV-ovima indeksa koji nedostaje, kao što je sys.dm_db_missing_index_details. U nekim slučajevima, detalji indeksa koji nedostaju sadržaće sadržaće uključene kolone. Pošto su sve kolone implicitno uključene u sve indekse u tabelama optimizovanim za memoriju, nije dozvoljeno eksplicitno navođenje uključenih kolona sa indeksima optimizovanim za memoriju.

  • Detalji indeksa koji nedostaju Izostavite indekse koji nedostaju ako heš indeks postoji, ali nije prikladan za upit

    Problem: Ako imate HASH indeks na kolone tabele optimizovane za memoriju na koju se upućuje u upitu, ali taj indeks nije moguće koristiti za upit, SQL Server 2014 neće uvek prijaviti indeks koji nedostaje u SHOWPLAN_XML i u DMV sys.dm_db_missing_index_details.

    Konkretno, ako upit sadrži predikate jednakosti koji uključuju podskup kolona ključa indeksa ili ako sadrži predikate nejednakosti koji uključuju kolone ključa indeksa, HASH indeks nije moguće koristiti takav kakav jeste i potreban je drugačiji indeks da bi se upit efikasno izvršio.

Uzrok

Do problema dolazi zato što logika indeksa koja nedostaje u optimizatoru upita ne razlikuje tradicionalne indekse bez grupisanja u tabelama zasnovanim na disku i nove tipove indeksa za tabele optimizovane za memoriju.

Rešenje

Problemi su prvi put rešeni u sledećoj kumulativnoj ispravci sistema SQL Server. 

Kumulativna ispravka 1 za SQL Server 2014 /en-us/help/2931693

Osnovni podaci o kumulativnim ispravkama za SQL Server

Svaka nova kumulativna ispravka za SQL Server sadrži sve hitne ispravke i sve bezbednosne ispravke koje su uključene u prethodnu kumulativnu ispravku. Pogledajte najnovije kumulativne ispravke za SQL Server:

      

Privremeno rešenje

Da biste zaobišli ove probleme, koristite sledeća privremena rešenja:

  • Zaobilazno rešenje problema: Detalji indeksa koji nedostaju pogrešni izveštaj o uključenim kolonama za tabelu optimizovanu za memoriju

    Nemojte navoditi odredbu INCLUDE sa indeksima u tabelama optimizovanim za memoriju.

  • Zaobilaženje problema: Detalji indeksa koji nedostaju izostavljaju indekse koji nedostaju ako heš indeks postoji, ali nije prikladan za upit

    U slučaju da koristite heš indekse, ispitajte upite i planove upita da biste utvrdili da li bi za upite mogle da imaju koristi operacije traženja indeksa na podskupu ključa indeksa ili operacije traženja indeksa na predikatima nejednakosti. Ako treba da tražite u podskupu ključa indeksa, koristite NEGRUPISANI indeks ili HASH indeks tačno onih kolona koje treba da tražite. Ako treba da tražite predikat nejednakosti, koristite indeks NONCLUSTERED umesto funkcije HASH.

Napomena: Privremena rešenja potiču iz napomena uz izdanje za SQL Server 2014

Status

Microsoft je potvrdio da je ovo problem u Microsoft proizvodima koji su navedeni u odeljku „Odnosi se na“.