| Termin | Definicja |
|---|---|
| TABLE VARIABLE | TABLE VARIABLE to zmienna przechowująca tymczasowy zbiór wierszy, o zakresie ograniczonym do bieżącej partii poleceń. Table variable w języku T-SQLTable variable, czyli zmienna tabelaryczna, jest konstrukcją języka Transact-SQL używaną w Microsoft SQL Server do przechowywania tymczasowego zestawu wierszy. Deklaruje się ją za pomocą składni Przykładowa deklaracja może wyglądać następująco: Zakres życia i widoczność zmiennej tabelarycznejNajważniejszą cechą table variable jest ograniczony zakres widoczności. Zmienna zadeklarowana w partii instrukcji, procedurze składowanej, funkcji albo bloku wykonywanym w określonym kontekście nie jest globalną tabelą bazy danych. Inne, niezależne partie poleceń nie mogą odwołać się do niej po zakończeniu zakresu, w którym została zadeklarowana. W praktyce oznacza to, że dane zapisane w Table variable może być używana w procedurach składowanych i funkcjach, a także przekazywana jako parametr tabelaryczny, jeżeli zostanie oparta na wcześniej zdefiniowanym typie tabelarycznym. Po zakończeniu zakresu zmienna przestaje być dostępna dla kodu wywołującego. Nie stosuje się jej jako zamiennika tabeli permanentnej, ponieważ nie posiada trwałego schematu biznesowego, nie jest przeznaczona do współdzielenia danych między niezależnymi wykonaniami i nie zastępuje mechanizmów przechowywania danych wymaganych po zakończeniu operacji. Transakcje, indeksowanie i plan wykonaniaZmienne tabelaryczne korzystają z zasobów tymczasowych SQL Server, mimo że ich deklaracja ma formę zmiennej. Podobnie jak inne operacje modyfikujące dane, polecenia dotyczące ich zawartości mogą być wykonywane w ramach transakcji. Trzeba jednak rozróżnić zakres życia zmiennej od zakresu transakcji: zakończenie transakcji nie oznacza automatycznie, że kod przestaje widzieć zmienną, jeśli nadal znajduje się w tym samym zakresie wykonywania. Z kolei wycofanie transakcji może cofnąć zmiany dokonane na jej wierszach. W table variable można zdefiniować klucz główny lub ograniczenie unikalności, co pozwala uzyskać indeks wspierający wyszukiwanie i łączenie danych. Nie jest to jednak pełny odpowiednik możliwości indeksowania zwykłej tabeli tymczasowej. Wybór między zmienną tabelaryczną a tabelą tymczasową powinien uwzględniać liczbę wierszy, liczbę operacji, złożoność łączeń oraz jakość planu wykonania. Microsoft SQL Server może mieć ograniczone informacje o statystykach rozkładu danych w zmiennej tabelarycznej, dlatego przy większych zbiorach optymalizator może dobrać plan niepasujący do rzeczywistej liczności. W nowszych wersjach SQL Server dostępne są mechanizmy poprawiające estymację liczby wierszy dla wybranych zastosowań, ale nie znosi to potrzeby pomiaru zapytań i analizy planu wykonania. Rozpoznawanie problemów z table variableNieprawidłowe użycie zmiennej tabelarycznej często ujawnia się jako długi czas wykonywania zapytania, nadmierne zużycie pamięci albo plan wykonania zawierający nieadekwatne operatory, takie jak wielokrotne skanowanie dużych tabel. Podczas analizy warto sprawdzić deklarację kolumn, typy danych używane w warunkach W diagnostyce zapytania w Microsoft SQL Server przydatne są rzeczywiste plany wykonania oraz pomiary czasu i odczytów logicznych, na przykład uzyskane po włączeniu |