Simptomi
Kada promenljivu tabele popunite sa mnogo redova, a zatim je spojite sa drugim tabelama, optimizator upita može da odabere neefikasan plan upita, što može dovesti do sporih performansi upita.
Rešenje
Kada primenite ovu hitnu ispravku, možete da uključite zastavicu za praćenje 2453 da biste dozvolili promenljivoj tabele da se ponovo pokrene kada se promeni dovoljan broj redova. To može omogućiti optimizatoru upita da odabere efikasniji plan. Problem je prvi put otklonjen u sledećoj kumulativnoj ispravci ili/i servisnim paketima za SQL Server.
Kumulativna ispravka 3 za SQL Server 2014 /en-us/help/2984923
Svaka nova kumulativna ispravka za SQL Server sadrži sve hitne ispravke i sve bezbednosne ispravke koje su bile uključene u prethodnu kumulativnu ispravku. Pogledajte najnovije kumulativne ispravke za SQL Server:
Servisni paketi su kumulativni. Svaki novi servisni paket sadrži sve ispravke koje se naći u prethodnim servisnim paketima, zajedno sa svim novim ispravkama. Naša preporuka je da primenite najnoviji servisni paket i najnoviju kumulativnu ispravku za taj servisni paket. Ne morate da instalirate prethodni servisni paket pre nego što instalirate najnoviji servisni paket. Koristite tabelu 1 u sledećem članku da biste pronašli više informacija o najnovijem servisnom paketu i najnovijoj kumulativnoj ispravci:
Utvrđivanje verzije, izdanja i nivoa ažuriranja sistema SQL Server i njegovih komponenti
Više informacija
Kada koristite promenljivu tabele u grupi ili proceduri, upit se sastavlja i optimizuje za početno prazno stanje promenljive tabele. Ako je ova promenljiva tabele popunjena sa mnogo redova u vreme izvršavanja, unapred sastavljeni plan upita možda više neće biti optimalan. Na primer, upit se možda spaja sa promenljivom tabele sa ugnežđenom petljom, jer je obično efikasnija za mali broj redova. Ovaj plan upita može biti neefikasan ako promenljiva tabele ima milione redova. Hash spoj je možda bolji izbor pod takvim uslovom. Da biste dobili novi plan upita, potrebno ga je ponovo napraviti. Međutim, za razliku od drugih korisničkih ili privremenih tabela, promena broja redova u promenljivoj tabele ne pokreće ponovni upit. To obično možete da zaobiđete sa opcijom OPTION (RECOMPILE), koja ima sopstveni indirektni trošak. Zastavica za praćenje 2453 omogućava ponovnu korist od ponovnog izvršavanja upita bez opcije (PONOVO IZVRŠI). Ova zastavica za praćenje se razlikuje od opcije (RECOMPILE) u dva glavna aspekta. (1) Koristi isti prag broja redova kao i druge tabele. Upit ne mora biti sastavljen za svako izvršavanje za razliku od OPCIJE (PONOVO IZVRŠI). To bi izazvalo ponovno svršavanje samo kada promena broja redova premaši unapred definisani prag. (2) OPTION (RECOMPILE) primorava upit da proviri parametre i optimizuje upit za njih. Ova zastavica za praćenje ne forsiše virenje parametara.Imajte na kraju da ova zastavica za praćenje mora biti ON u vreme izvršavanja. Ovu zastavicu za praćenje ne možete da koristite sa funkcijom QUERYTRACEON. Ova zastavica za praćenje mora da se koristi sa oprezom jer može da poveća broj ponovnih izvršitelja upita što može da košta više od uštede od bolje optimizacije upita.
Status
Microsoft je potvrdio da je ovo problem u Microsoft proizvodima koji su navedeni u odeljku "Odnosi se na".