Dodatkowe informacje
ISBN:[zasłonięte]978-8341-054-9liczba stron: 956Okładka: miękkaWydawnictwo: Microsoft PressRok wydania: Opis
Opanuj mechanizmy zaawansowanych zapytań i dostrajania, aby uzyskać szybszy i bardziej skalowalny kod
Zespół autorów o wszechstronnej wiedzy na temat T-SQL pokazuje, jak radzić sobie z najtrudniejszymi problemami dotyczącymi zapytań opartych na zbiorach. Książka pozwala pogłębić wiedzę na temat architektury i wewnętrznych mechanizmów bazy danych i osiągnąć biegłość w znajdowaniu praktycznych i wydajnych rozwiązań.
Dowiedz się, jak:
- przejść od proceduralnego programowania do myślenia o zbiorach i zależnościach logicznych,
- optymalizować zapytania przy użyciu podejścia od góry do dołu,
- szacować złożoność algorytmu, aby móc przewidywać wydajność i sprawność,
- porównywać techniki agregowania danych, w tym nowe mechanizmy grupowania zbiorów,
- dobierać mechanizmy modyfikacji danych - wstawianie, usuwanie, aktualizowanie i łączenie - pod kątem pożądanej wydajności,
- pisać bardziej efektywne zapytania odwołujące się do tabel partycjonowanych,
- korzystać z wykresów, drzew, hierachii i zapytań rekursywnych.
- Dodatkowo - zbiór zagadek logicznych pozwalających podnieść umiejętność rozwiązywania problemów.
Spis treści:
Przedmowa
Podziękowania
Wprowadzenie
1 Logiczne przetwarzanie zapytań
Fazy logicznego przetwarzania zapytań
Krótkie omówienie faz logicznego przetwarzania zapytania
Przykładowe zapytanie oparte na scenariuszu z użyciem tabeli klientów i zamówień
Szczegóły faz procesu logicznego przetwarzania zapytań
Krok 1: Faza FROM
Krok 2: Faza WHERE
Krok 3: Faza GROUP BY
Krok 4: Faza HAVING
Krok 5: Faza SELECT
Krok 6: Faza prezentacji ORDER BY
Pozostałe aspekty logicznego przetwarzania zapytań
Operatory tablicowe
Klauzula OVER
Operatory zbiorowe
Podsumowanie
2 Teoria zbiorów i logika predykatów
Przykład tłumaczenia problemu z języka potocznego na język matematyczny
Dobre zdefiniowanie
Równość, tożsamość i podobieństwo
Konwencje matematyczne
Liczby
Kontekst
Funkcje, parametry i zmienne
Instrukcje i algorytmy
Teoria zbiorów
Notacje używane do zapisywania zbiorów
Zbiory dobrze zdefiniowane
Domeny zawartości
Dokładność
Paradoks Russella
Pary uporządkowane, krotki oraz iloczyn kartezjański
Zbiór pusty
Funkcja charakterystyczna zbioru
Kardynalność
Kolejność
Operatory zbiorowe
Podziały zbioru na części
Uogólnienia teorii zbiorów
Logika predykatów
Funkcje około-logiczne języków programowania
Zdania i predykaty
Prawo wykluczonego środka
Operatory logiczne i, lub oraz nie
Logiczna równoważność
Logiczna implikacja
Kwantyfikacja
Alternatywy i uogólnienia
Relacje
Właściwości zwrotności, symetryczności i przechodniości
Zastosowanie praktyczne
Podsumowanie
3 Model relacyjny
Wprowadzenie do modelu relacyjnego
Relacje, krotki i typy danych
Model relacyjny: krótkie podsumowanie
Algebra relacyjna oraz rachunek relacyjny
Podstawowe operatory
Algebra relacyjna
Rachunek relacyjny
Język T-SQL
Integralność danych
Ograniczenia deklaratywne
Inne sposoby wymuszania integralności
Normalizacja i inne kwestie projektowe
Postacie normalne związane z zależnościami funkcjonalnymi
Wyższe postacie normalne
Denormalizacja
Generalizacja i specjalizacja
Podsumowanie
4 Dostrajanie zapytań
Przykładowe dane dla tego rozdziału
Metodologia procesu dostrajania
Analiza stanów oczekiwania na poziomie instancji
Korelacja stanów oczekiwania z kolejkami
Określenie kierunku działania
Schodzenie do poziomu bazy danych lub pliku
Schodzenie do poziomu procesu
Dostrajanie indeksów i zapytań
Narzędzia służące do dostrajania zapytań
Buforowane plany wykonywania zapytań
Oczyszczanie pamięci podręcznej
Dynamiczne obiekty zarządzające
Opcja STATISTICS IO
Mierzenie czasu wykonywania zapytań
Analizowanie planów wykonywania
Wskazówki
Śledzenie zdarzeń i program Profiler
Program Database Engine Tuning Advisor
Gromadzenie danych i hurtownia danych zarządzających
Klonowanie statystyk przy użyciu obiektów SMO
Dostrajanie indeksów
Struktury tabel i indeksów
Metody dostępu do indeksów
Analiza różnych strategii indeksowania
Fragmentacja
Partycjonowanie
Przygotowywanie danych przykładowych
Przygotowanie danych
Opcja TABLESAMPLE
Porównanie podejścia opartego na zbiorach z podejściem iteracyjnym/proceduralnym
Podsumowanie
5 Algorytmy i ich złożoność
Czy masz ćwierćdolarówkę?
Stopień skalowalności algorytmów
Przykład skalowania kwadratowego
Algorytm o liniowej złożoności
Złożoność wykładnicza i super wykładnicza
Złożoność subliniowa
Stała złożoność
Techniczna definicja złożoności
Porównywanie złożoności
Algorytmy klasyczne i strategie algorytmiczne
Algorytmy sortowania
Wyszukiwanie łańcuchów znakowych
Zastosowanie praktyczne
Określanie trendu w wynikach pomiarów
Złożoność algorytmiczna problemu NDZSP
Rozwiązywanie problemu NDZSP w języku T-SQL
Podsumowanie
6 Zapytania podrzędne, wyrażenia tablicowe oraz funkcje szeregujące
Zapytania podrzędne
Samodzielne zapytania podrzędne
Skorelowane zapytania podrzędne
Niepoprawnie działające zapytania podrzędne
Nietypowe predykaty
Wyrażenia tablicowe
Tabele pochodne
Wspólne wyrażenia tablicowe
Analityczne funkcje szeregujące
Numer wiersza
Szereg i szereg zwarty
Numer płytki
Pomocnicza tabela liczb
Istniejące i brakujące zakresy (nazywane również wyspami i przerwami)
Brakujące zakresy (przerwy)
Istniejące zakresy (wyspy)
Podsumowanie
7 Połączenia i operacje na zbiorach
Połączenia
Porównanie starego i nowego stylu składni połączeń
Podstawowe rodzaje połączeń
Kolejne przykłady połączeń
Całkowita suma dla przesuwającego się okna poprzedniego roku
Algorytmy połączeń
Rozdzielanie elementów
Operacje na zbiorach
UNION
EXCEPT
INTERSECT
Kolejność wykonywania operacji na zbiorach
Używanie klauzuli INTO w operacjach na zbiorach
Omijanie ograniczeń dotyczących nieobsługiwanych faz logicznych
Podsumowanie
8 Agregowanie i przestawianie danych
Klauzula OVER
Atrybuty rozstrzygające
Agregacje bieżące
Agregacje kumulujące
Agregacje przesuwne
Agregacje typu YTD
Przestawianie danych
Przestawianie atrybutów
Podział relacyjny
Agregowanie danych
Odwrotne przestawianie danych
Agregacje niestandardowe
Agregacje niestandardowe używające przestawiania danych
Agregacje definiowane przez użytkownika
Rozwiązania specjalizowane
Histogramy
Czynnik grupujący
Zbiory grupujące
Dane przykładowe
Klauzula podrzędna GROUPING SETS
Klauzula podrzędna CUBE
Klauzula podrzędna ROLLUP
Algebra zbiorów grupujących
Funkcja GROUPING_ID
Materializowanie zbiorów grupujących
Sortowanie
Podsumowanie
9 TOP i APPLY
SELECT TOP
Opcja TOP i determinizm
Opcja TOP i wyrażenia wejściowe
Opcja TOP i modyfikacje
Opcja TOP na sterydach
APPLY
Rozwiązania typowych problemów używające opcji TOP i operatora APPLY
TOP n dla każdej grupy
Dopasowywanie do siebie bieżących i poprzednich wystąpień
Stronicowanie
Losowe wiersze
Mediana
Przekształcenia logiczne
Podsumowanie
10 Modyfikowanie danych
Wstawianie danych
Rozszerzona klauzula VALUES
SELECT INTO
Dostawca zbioru wierszy typu BULK
Operacje z minimalnym poziomem rejestrowania
INSERT EXEC
Mechanizmy sekwencjonujące
Identyfikatory GUID
Usuwanie danych
Porównanie instrukcji TRUNCATE i DELETE
Usuwanie wierszy z powtarzającymi się danymi
Instrukcja DELETE oparta na połączeniu
Aktualizowanie danych
Instrukcja UPDATE używająca połączenia
Aktualizowanie dużych typów danych
Przypisania wykonywane za pomocą instrukcji SELECT i UPDATE
Scalanie danych
Podstawy działania instrukcji MERGE
Dodawanie predykatu
Wielokrotne klauzule WHEN
Klauzula WHEN NOT MATCHED BY SOURCE
Scalanie wartości
Instrukcja MERGE i procedury wyzwalane
Klauzula OUTPUT
Instrukcja INSERT z klauzulą OUTPUT
Instrukcja DELETE z klauzulą OUTPUT
Instrukcja UPDATE z klauzulą OUTPUT
Instrukcja MERGE z klauzulą OUTPUT
Komponowalne instrukcje DML
Podsumowanie
11 Odpytywanie tabel podzielonych na partycje
Dzielenie na partycje w serwerze SQL Server
Widoki partycjonowane
Tabele partycjonowane
Podsumowanie
12 Grafy, drzewa, hierarchie i zapytania rekurencyjne
Terminologia
Grafy
Drzewa
Hierarchie
Scenariusze
Schemat organizacyjny pracowników
Wykaz towarów
Sieć dróg
Iteracja/Rekurencja
Elementy podrzędne
Elementy poprzedzające
Grafy podrzędne i drzewa podrzędne z enumeracją ścieżki
Sortowanie
Cykle
Ścieżka zmaterializowana
Utrzymywanie danych
Odpytywanie
Ścieżka zmaterializowana z typem danych HIERARCHYID
Utrzymywanie danych
Odpytywanie
Inne aspekty stosowania typu danych HIERARCHYID
Zbiory zagnieżdżone
Przypisywanie lewych i prawych wartości
Zapytania
Domknięcie przechodnie
Zorientowane grafy acykliczne
Podsumowanie
A Zagadki logiczne
Zagadki
Zadanie 1: Reszty z dzielenia
Zadanie 2: Okrągłe pokrywy studzienek kanalizacyjnych
Zadanie 3: Uściski dłoni
Zadanie 4: Aż pięć razy?
Zadanie 5: Ustawianie żołnierzy w szeregu
Zadanie 6: Przechodzenie przez tunel
Zadanie 7: Jak wydostać się z jaskini
Zadanie 8: Darmowy tuńczyk
Zadanie 9: Wyznaczanie następcy tronu
Zadanie 10: Następny element szeregu
Zadanie 11: Urodziny w tym samym dniu
Zadanie 12: Dogonić pociąg
Zadanie 13: Więźniowie i przełączniki
Zadanie 14: Prawdopodobieństwo w Chinach
Zadanie 15: Dwóch matematyków
Zadanie 16: Zwariowana sekwencja
Zadanie 17: Minimalna liczba odważników
Zadanie 18: Zliczanie trójkątów
Zadanie 19: Fałszywe monety
Zadanie 20: Jeden i pół
Zadanie 21: Kot, sznurek i kula ziemska
Zadanie 22: Problem Josephulusa
Zadanie 23: Morska algebra
Zadanie 24: Zadanie z trójkątami równobocznymi
Rozwiązania zagadek
Zadanie 1: Reszty z dzielenia
Zadanie 2: Okrągłe pokrywy studzienek kanalizacyjnych
Zadanie 3: Uściski dłoni
Zadanie 4: Aż pięć razy?
Zadanie 5: Ustawianie żołnierzy w szeregu
Zadanie 6: Przechodzenie przez tunel
Zadanie 7: Jak wydostać się z jaskini
Zadanie 8: Darmowy tuńczyk
Zadanie 9: Wyznaczanie następcy tronu
Zadanie 10: Następny element szeregu
Zadanie 11: Urodziny w tym samym dniu
Zadanie 12: Dogonić pociąg
Zadanie 13: Więźniowie i przełączniki
Zadanie 14: Prawdopodobieństwo w Chinach
Zadanie 15: Dwóch matematyków
Zadanie 16: Zwariowana sekwencja
Zadanie 17: Minimalna liczba odważników
Zadanie 18: Zliczanie trójkątów
Zadanie 19: Fałszywe monety
Zadanie 20: Jeden i pół
Zadanie 21: Kot, sznurek i kula ziemska
Zadanie 22: Problem Josephulusa
Zadanie 23: Morska algebra
Zadanie 24: Zadanie z trójkątami równobocznymi
Podsumowanie
Indeks 900