Welcome to Our Website

SQLShack (Polski)

bardzo korzystne jest przechowywanie danych w tabelach tymczasowych SQL Server zamiast manipulować lub pracować z tabelami stałymi. Załóżmy, że chcesz mieć pełny dostęp DDL lub DML do stołu, ale go nie masz. Możesz użyć istniejącego dostępu do odczytu, aby pobrać dane do tymczasowej tabeli SQL Server i wprowadzić stamtąd korekty. Lub nie masz uprawnień do tworzenia tabeli w istniejącej bazie danych, możesz utworzyć tabelę tymczasową SQL Server, którą możesz manipulować., Na koniec możesz znaleźć się w sytuacji, w której dane muszą być widoczne tylko w bieżącej sesji.

SQL Server obsługuje kilka typów tabel temp SQL Server, które mogą być bardzo pomocne.

zanim przejdziemy dalej, jeśli chcesz śledzić próbki kodu, proponuję otworzyć SQL Server Management Studio:

lokalne tabele temp SQL Server

lokalne tabele temp SQL Server są tworzone za pomocą symbolu pound lub „hashtag”, po którym następuje nazwa tabeli. Na przykład: # Table_name. Tabele temp SQL są tworzone w bazie danych tempdb., Lokalna tabela tymczasowa SQL Server jest widoczna tylko dla bieżącej sesji. Nie może być widziany ani używany przez procesy lub zapytania poza sesją, w której jest zadeklarowany.

oto szybki przykład użycia zestawu wyników i umieszczenia go w tabeli SQL Server temp.

jeden z najczęściej używanych scenariuszy dla tabel temp SQL Server znajduje się w jakiejś pętli. Na przykład, chcesz przetwarzać dane do instrukcji SQL i potrzebujesz miejsca do przechowywania elementów do odczytu pętli. Zapewnia szybkie i skuteczne środki, aby to zrobić., Zobacz przykładowy kod powyżej, twoja pętla może teraz odwoływać się do tabeli tymczasowej SQL Server i przetwarzać rekordy, które spełniają kryteria Twojego celu.

kolejnym powodem, dla którego warto używać tabel temp SQL Server jest to, że w instrukcji sql trzeba wykonać pewne wymagające przetwarzanie. Załóżmy, że tworzysz połączenie i za każdym razem, gdy musisz pobrać rekordy z tego zestawu wyników, musi ono przetworzyć to połączenie od nowa. Dlaczego po prostu nie przetworzyć tego zestawu wyników raz i wrzucić rekordy do tabeli SQL temp? Następnie reszta instrukcji sql może odnosić się do nazwy tabeli SQL temp., Nie tylko pozwala to zaoszczędzić na kosztownym przetwarzaniu zapytań, ale może nawet sprawić, że Twój kod będzie wyglądał trochę czystiej.

jest jednak jedna kwestia, którą chcę poruszyć. Jeśli sesja, w której pracujemy, ma kolejne zagnieżdżone sesje, tabele temp SQL Server będą widoczne w sesjach niższych w hierarchii, ale nie wyżej w hierarchii. Proszę pozwolić mi to sobie wyobrazić.

w tym szybkim diagramie, tabela SQL temp jest tworzony w Sesji 2. Sesje poniżej (sesje 3 i 4) są w stanie zobaczyć tabelę SQL Server temp., Ale Sesja 1, która jest powyżej Sesji 2, nie będzie w stanie zobaczyć tabeli SQL Server temp.

tabela temp SQL jest usuwana lub niszczona po rozłączeniu sesji. Wiele razy zobaczysz, że deweloperzy używają polecenia” DROP #Table_Name ” na końcu ich instrukcji tylko do czyszczenia. Ale to zależy wyłącznie od Ciebie i tego, co próbujesz osiągnąć.,

należy również zauważyć, że w przypadku konfliktu nazw (pamiętaj, że tabele temp SQL Server są tworzone w tempdb) SQL server doda sufiks na końcu nazwy tabeli, tak aby była unikalna w bazie danych tempdb. Ale ten proces jest przejrzysty dla dewelopera/użytkownika. Możesz użyć tej samej nazwy, którą zadeklarowałeś, ponieważ jest ona ograniczona do tej sesji.

globalne tabele temp SQL

globalne tabele temp SQL są przydatne, gdy chcesz, aby zestaw wyników był widoczny dla wszystkich innych sesji. Nie ma potrzeby ustawiania uprawnień., Każdy może wstawiać wartości, modyfikować lub pobierać rekordy z tabeli. Należy również pamiętać, że każdy może upuścić stół. Podobnie jak lokalne tabele temp SQL Server, są one usuwane po rozłączeniu sesji i nie ma już żadnych odniesień do tabeli. Zawsze możesz użyć polecenia „DROP”, aby wyczyścić go ręcznie. Co polecam.

aby utworzyć globalną tabelę SQL temp, wystarczy użyć dwóch symboli funta przed nazwą tabeli. Przykład: # # Global_Table_Name.,

zmienne Tabelkowe

zmienne Tabelkowe są tworzone jak każda inna zmienna przy użyciu instrukcji DECLARE. Wielu uważa, że zmienne tabel istnieją tylko w pamięci, ale to po prostu nieprawda. Znajdują się one w bazie danych tempdb podobnie jak lokalne tabele temp serwera SQL. Podobnie jak lokalne tabele temp SQL, zmienne tabel są dostępne tylko w ramach sesji, która je utworzyła. Jednak w przeciwieństwie do tabel SQL temp zmienna table jest dostępna tylko w bieżącej partii. Nie są one widoczne poza partiami, co oznacza, że pojęcie hierarchii sesji może być nieco zignorowane.,

jeśli chodzi o wydajność, zmienne tabel są przydatne przy niewielkich ilościach danych (jak tylko kilka wierszy). W przeciwnym razie tabela tymczasowa SQL Server jest przydatna podczas przesiewania dużych ilości danych. Tak więc w przypadku większości skryptów najprawdopodobniej zobaczysz użycie tabeli tymczasowej SQL Server w przeciwieństwie do zmiennej table. Nie mówiąc, że jeden jest bardziej przydatny niż drugi, po prostu musisz wybrać odpowiednie narzędzie do pracy.

oto szybki przykład konfiguracji i użycia zmiennej table.,

stworzyliśmy zmienną tabelkową, która będzie zawierała informacje dotyczące całkowitej ilości sprzedanego produktu. Jest to bardzo uproszczony przykład i nie użylibyśmy go, gdyby zawierał wiele wierszy. Ale gdybyśmy patrzyli tylko na kilka produktów, to może być naprawdę dobrze. Po wypełnieniu zmiennej table możesz dołączyć ją jako tabelę do kolejnej tabeli i zebrać wszelkie potrzebne informacje. Tak więc istnieje duża elastyczność i pozwala deweloperowi być dość kreatywnym.

również, na koniec, w odniesieniu do transakcji na zmiennych tabeli., Jeśli programista wycofa transakcję, która zawiera zmiany zmiennych tabeli, zmiany wprowadzone do zmiennych tabeli w tej konkretnej transakcji pozostaną nienaruszone. Oznacza to, że inne części tej transakcji zostaną wycofane, ale wszystko, co odnosi się do zmiennej table, nie zostanie wycofane, chyba że ta część skryptu jest błędna.,

  • Autor
  • Ostatnie posty
Aamir jest administratorem baz danych SQL Server w obszarze NYC/NJ (a ostatnio przyjął rolę dewelopera baz danych).
swoją karierę IT rozpoczął w świecie helpdesk, a ostatecznie przeszedł do strony networking / systems administrator. Po pewnym czasie rozwinął zamiłowanie do pracy z bazami danych (głównie SQL Server) i skupił na tym swoją karierę przez ostatnie osiem lat., Pracował dla różnych branż, zarówno w dużych, jak i małych środowiskach o różnych potrzebach.
SQL Shack dał mu możliwość przyczynienia się do społeczności, która dała mu tak wiele na przestrzeni lat.,
Zobacz wszystkie posty Aamir Syed

najnowsze posty Aamir Syed (Zobacz wszystkie)
  • Is SQL Server Always Encrypted, for sensitive data encryption, right for your environment – July 27, 2018
  • i

  • kiedy używać tabel tymczasowych SQL vs. table variables – 21 lutego 2017

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *