INF: Často kladené dotazy - serveru SQL Server 2000 - proměnné Tabulka

ID článku: 305977 - Produkty, které se vztahují k tomuto článku.
Rozbalit všechny záložky | Minimalizovat všechny záložky

Souhrn

Tento článek poskytuje odpovědi některé časté otázky (FAQ) týkající se tabulky proměnné, které jsou zavedeny v serveru SQL Server 2000.

Chcete-li číst SQL Server Books Online popis z tabulky proměnných, navštivte následující web společnosti Microsoft:
http://msdn2.microsoft.com/en-us/library/aa260638(SQL.80).aspx

Další informace

Q1: Proč byly proměnné tabulky zavedeny při dočasných tabulek již byly k dispozici?

A1: Proměnné Tabulka mají následující výhody dočasných tabulek:
  • Jak je uvedeno v článku SQL Server Books Online "Tabulky", mají tabulky proměnné, jako je například místní proměnné dobře definovaný rozsah na konci, které jsou jsou automaticky vymazány.
  • Tabulka proměnné za následek méně předkompilací ve srovnání s dočasné tabulky uložené procedury.
  • Transakce, které se týkají proměnné Tabulka poslední pouze po dobu trvání aktualizaci na proměnné Tabulka. Proměnné Tabulka vyžadují proto menší blokování a protokolování zdrojů. Vzhledem k tomu, že proměnné tabulka mít omezený rozsah a nejsou součástí databáze trvalé, vrácení transakce zpět je neovlivní.
Q2: Co to znamená vyslovením proměnné Tabulka následek méně předkompilací uložené procedury, než při použití dočasných tabulek?

A2: Následující článek popisuje důvody, když jsou uložené procedury recompiled:

243586Poradce při potížích s uloženou proceduru recompilation
Oddíl "Předkompilací související s některé dočasné tabulky operace" také uvádí některé požadavky, aby například recompilation z důvodu dočasných tabulek. Tato omezení se nevztahují na proměnné Tabulka.

Proměnné Tabulka jsou zcela izolovány na listu, který vytvoří jim tak, aby žádné si rozlišením "má dojít, pokud příkazu CREATE nebo ALTER uskutečňuje, které mohou nastat v dočasné tabulce. Dočasné tabulky nutné tuto práci rozlišením "tak, že v tabulce lze odkazovat z vnořených uložené procedury. Proměnné Tabulka vyhnout zcela uložené procedury lze použít plán, který je již zkompilovaný, tedy ukládání prostředků pro zpracování uložené procedury.

Q3: co jsou některé nevýhod proměnné Tabulka?

A3: Zde jsou některé nedostatky ve srovnání s dočasných tabulek:
  • Clusterů bez indexy nemohou být vytvořeny v tabulce proměnné, jiné než indexy systému, které jsou vytvořeny pro omezení primární nebo UNIQUE. Které mohou ovlivnit výkonu dotazů v porovnání s dočasnou tabulku s indexy bez clusterů.
  • Proměnné Tabulka není zachovat statistiky jako dočasné tabulky lze. Statistické údaje nemohou být vytvořeny v tabulce proměnných prostřednictvím automatické vytváření nebo pomocí příkazu CREATE STATISTICS. Pro složité dotazy na rozsáhlých tabulek může proto nedostatek statistiky odradit Optimalizátor určit nejlepší plán dotazu, tedy ovlivňující výkon dotazu.
  • Definice tabulky nemůže být změněn po počáteční příkazu DECLARE.
  • Proměnné tabulky nelze použít v příkazu INSERT EXEC nebo SELECT INTO.
  • Omezení CHECK, výchozí hodnoty a vypočítaného sloupce v deklarace typu tabulka, nelze volat uživatelem definované funkce.
  • Příkazu EXEC nebo sp_executesql uložené procedury nelze použít k dynamické dotaz serveru SQL Server, odkazující tabulky proměnné, spustit v případě, že proměnné Tabulka byla vytvořena mimo příkazu EXEC nebo sp_executesql uložené procedury. Protože tabulka proměnné lze odkazovat v místním oboru pouze, příkazu EXEC a sp_executesql uložené procedury by mimo oblast působnosti proměnné Tabulka. Však můžete vytvořit proměnné Tabulka a provádění všech zpracování uvnitř příkazu EXEC nebo sp_executesql uložená procedura, protože pak proměnné Tabulka místní obor je v příkazu EXEC nebo sp_executesql uložená procedura.
Q4: jsou proměnné Tabulka jen paměti struktury, které jsou zajištěna lepší výkon ve srovnání s dočasné nebo trvalé tabulky, protože jsou zachovány v databázi, která je umístěna na fyzický disk?

A4: Proměnné Tabulka není strukturu pouze v paměti. Protože proměnné tabulka by mohly mít v držení více dat, než se vejde do paměti, nemá místo na disku ukládat data. Proměnné Tabulka se vytvoří v databázi tempdb podobný dočasné tabulky. Pokud není k dispozici paměť, obě tabulky proměnných a dočasných tabulek jsou vytvářeny a zpracovávány během v paměti (mezipaměť dat).

Q5: třeba použít proměnné Tabulka namísto dočasné tabulky?

A5: Odpověď závisí na tyto tři faktory:
  • Počet řádků, které jsou vloženy do tabulky.
  • Číslo dotazu uložena z předkompilací.
  • Typ dotazů a jejich závislost na indexy a statistické údaje o výkonu.
V některých situacích je vhodné rozdělení do menších uložené procedury s dočasné tabulky uložené procedury, tak, aby recompilation se uskutečňuje na menší jednotky.

Obecně používáte tabulky proměnných, kdykoli je to možné, s výjimkou když tam je významný objem dat a je opakované použití v tabulce. V takovém případě můžete vytvořit indexy v tabulce dočasného zvýšení výkonu dotazu. Každý scénář může být odlišné. Společnost Microsoft doporučuje otestovat Pokud tabulky proměnných jsou užitečné více než dočasné tabulky pro konkrétní tabulku nebo uloženou proceduru.

Odpověď na otázku nebyly zobrazeny? Navštivte Microsoft SQL Server diskusní skupiny věnované na následujícím webu: Microsoft SQL Server Newsgroups

Máte připomínky k tomuto nebo jiným Microsoft SQL Server článku znalostní báze Knowledge Base? Pošlete nám na SQLKB@Microsoft.com

Vlastnosti

ID článku: 305977 - Poslední aktualizace: 29. března 2007 - Revize: 6.3
Informace v tomto článku jsou určeny pro produkt:
  • Microsoft SQL Server 2000 Standard Edition
Klíčová slova: 
kbmt kbfaq kbinfo KB305977 KbMtcs
Strojově přeložený článek
Důležité: Tento článek byl přeložen pomocí software společnosti Microsoft na strojový překlad, ne profesionálním překladatelem. Společnost Microsoft nabízí jak články přeložené překladatelem, tak články přeložené pomocí software na strojový překlad, takže všechny články ve Znalostní databázi (Knowledge Base) jsou dostupné v češtině. Překlad pomocí software na strojový překlad ale není bohužel vždy dokonalý. Obsahuje chyby ve skloňování slov, skladbě vět, nebo gramatice, podobně jako když cizinci dělají chyby při mluvení v češtině. Společnost Microsoft není právně zodpovědná za nepřesnosti, chyby nebo škody vzniklé chybami v překladu, nebo při použití nepřesně přeložených instrukcí v článku zákazníkem. Společnost Microsoft aktualizuje software na strojový překlad, aby byl počet chyb omezen na minimum.
Projděte si také anglickou verzi článku:305977

Dejte nám zpětnou vazbu