Projektuj i pisz prosty i wydajny kod T-SQL w środowisku SQL Server 2019 i późniejszych. Tworzenie kodu T-SQL, wydajnie zwracającego właściwe wyniki może stanowić wyzwanie. Książka ta pomoże w tworzeniu takiego kodu, który działa szybko i jest łatwy w utrzymaniu. Dowiesz się również, jak implementować kontrolę wersji, testowanie i strategie wdrożenia.
Przykłady i ćwiczenia do samodzielnego wykonania pokazują nowoczesne praktyki T-SQL wraz z jednoznacznymi wyjaśnieniami. Uwaga skupiona jest na wyborze właściwych typów danych i obiektów przy projektowaniu rozwiązań. Autorka Elizabeth Noble pokazuje, jak usprawnić wydajność kodu T-SQL dzięki stosowaniu dobrych praktyk projektowych, które ułatwiają pracę programistów i ostatecznie zapewniają korzyści użytkownikom aplikacji. Poznasz również typowe pułapki związane z tworzeniem kodu T-SQL i sposoby unikania ich w codziennej pracy.
Czego się nauczysz:
• Wybierania właściwych typów danych i obiektów bazodanowych przy projektowaniu rozwiązań T-SQL
• Pisania kodu T-SQL, który wydajnie przeszukuje dane i efektywnie wykorzystuje dostępny sprzęt
• Implementowania kontroli wersji i metod testowania w celu uporządkowania procesu wdrażania
• Projektowania kodu T-SQL, który można usprawniać lub modyfikować mniejszym wysiłkiem
• Planowania długoterminowego zarządzania i przechowywania danych
Dla kogo jest ta książka:
Dla deweloperów baz danych, chcących podnieść wydajność swoich aplikacji oraz wszystkich tych, którzy mierzą się ze złożonym zapytaniami i problemami.
Znajdź podobne książki
Ostatnio czytane w tej kategorii
Darmowy fragment publikacji:
Strona tytułowa
Elisabeth Noble
Profesjonalny kod
T-SQL 2019
W stronę szybkości, skalowalności
i standaryzacji rozwiązań
dla SQL Server
Przekład: Marek Włodarz
APN Promise, Warszawa 2020
Spis treści
O autorce . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .xi
Podziękowania . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xii
Wstęp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xiii
Część I. Budowanie zrozumiałego T-SQL . . . . . . . . . . . . . . . . . . . . . . . . . . .1
Rozdział 1. Typy danych . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
Numeryczne typy danych . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
Dokładne numeryczne typy danych . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
Przybliżone typy danych liczbowych . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
Konwertowanie numerycznych typów danych . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
Łańcuchowe typy danych (string). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
Łańcuchy znakowe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
Typy danych łańcuchowych Unicode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
Binarne typy danych łańcuchowych . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
Typ danych daty i czasu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
DATE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
TIME . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
SMALLDATETIME, DATETIME, DATETIME2, DATETIMEOFFSET . . . . . . . . . . . . . . . . . . . . . 16
Inne typy danych . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
UNIQUEIDENTIFIER . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
Typ GEOMETRY . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
Typ GEOGRAPHY . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
SQL_VARIANT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
v
Spis treści
ROWVERSION . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
HIERARCHYID . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
TABLE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
CURSOR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
Rozdział 2. Obiekty bazodanowe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
Widoki . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
Widoki zdefi niowane przez użytkownika . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
Widok indeksowany . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
Funkcje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
Funkcje skalarne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
Funkcje tablicowe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
Inne obiekty zdefi niowane przez użytkownika . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
Zdefi niowane przez użytkownika typy tablicowe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
Parametry o wartościach tablicowych . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
Wspólne wyrażenia tablicowe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
Obiekty tymczasowe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
Tabele tymczasowe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
Zmienne tablicowe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
Tymczasowe procedury składowane . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
Wyzwalacze . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
Wyzwalacze logowania . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
Wyzwalacze Data Defi nition Language (DDL) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
Wyzwalacze Data Manipulation Language (DML) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
Kursory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
Kursory bez nawracania (Forward-Only) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
Kursory statyczne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
Kursory zestawu klucza (Keyset) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
Kursory dynamiczne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
Rozdział 3. Standaryzowanie kodu T-SQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
Formatowanie kodu T-SQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
Nazywanie obiektów T-SQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
Komentowanie kodu T-SQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
vi
Spis treści
Rozdział 4. Projektowanie T-SQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
Korzystanie z procedur składowanych . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
Korzystanie z parametrów . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
Używanie złożonej logiki . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
Część II. Budowanie wydajnego kodu T-SQL . . . . . . . . . . . . . . . . . . . . . .121
Rozdział 5. Projektowanie oparte na zbiorach . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
Wprowadzenie do projektowania opartego na zbiorach . . . . . . . . . . . . . . . . . . . . . . . . 123
Myślenie zbiorami danych . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
Pisanie kodu dla zbiorów danych . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
Rozdział 6. Wykorzystanie sprzętu. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145
Uwzględnianie pamięci przy projektowaniu kodu T-SQL . . . . . . . . . . . . . . . . . . . . . . . . 146
Uwzględnianie magazynowania przy projektowaniu kodu T-SQL . . . . . . . . . . . . . . . . . 152
Uwzględnianie procesora przy projektowaniu kodu T-SQL . . . . . . . . . . . . . . . . . . . . . . 156
Rozdział 7. Plany wykonania . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163
Czytanie planów zapytań . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164
Wykorzystanie indeksów w planach wykonania . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173
Typy złączeń logicznych w planach wykonania . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183
Rozdział 8. Optymalizacja T-SQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195
Optymalizowanie odczytów logicznych . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195
Optymalizowanie czasu trwania . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203
Automatyczne dostrajanie bazy danych . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208
Query Store. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208
Automatyczne korygowanie planów . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209
Automatyczne zarządzanie indeksami . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211
Inteligentne przetwarzanie zapytań . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211
Informacje zwrotne o grantach pamięci . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212
Tryb wsadowy w magazynie wierszowym . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212
Złączenia adaptacyjne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212
vii
Spis treści
Część III. Budowanie zarządzalnego kodu T-SQL . . . . . . . . . . . . . . . . . .219
Rozdział 9. Standardy kodowania . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221
Dlaczego standardy kodowania . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221
Co włączyć do standardu kodowania . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224
Projektowanie kodu T-SQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224
Wydajność kodu T-SQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228
Użyteczność kodu T-SQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238
Rozdział 10. Kontrola źródeł . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245
Dlaczego używać kontroli źródeł . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246
Jak używać kontroli źródeł . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249
Konfi gurowanie kontroli źródeł . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254
Rozdział 11. Testowanie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269
Testy jednostkowe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269
Testy integracyjne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282
Testy obciążeniowe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287
Statyczna analiza kodu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 288
Rozdział 12. Wdrażanie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291
Flagi funkcjonalności . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291
Metodologia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 299
Automatyzowanie wdrożenia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 306
Część IV. Utrzymywalny kod T-SQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .315
Rozdział 13. Funkcjonalny projekt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317
Wstawianie i aktualizowanie danych . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317
Wyłączanie funkcjonalności . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323
Obsługa odziedziczonego kodu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329
Raportowanie oparte na danych transakcyjnych . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 336
Dynamiczny kod SQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342
viii
Spis treści
Rozdział 14. Rejestrowanie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 347
Modyfi kacje danych . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 347
Obsługa błędów . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 357
Rozdział 15. Zarządzanie rozrostem danych . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363
Partycjonowanie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 364
Partycjonowane tabele . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 372
Widoki partycjonowane . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 384
Obciążenia hybrydowe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 390
Indeks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 399
ix
Pobierz darmowy fragment (pdf)
Gdzie kupić całą publikację:
Profesjonalny kod T-SQL 2019. W stronę szybkości, skalowalności i standaryzacji rozwiązań dla SQL Server
Autor: Elizabeth Noble
Opinie na temat publikacji:
Inne popularne pozycje z tej kategorii:
Czytaj również:
Prowadzisz stronę lub blog? Wstaw link do fragmentu tej książki i współpracuj z Cyfroteką :