Mistrzowski_SQL_61_technik_pisania_wydajnego_kodu_SQL_missql.pdf

(2912 KB) Pobierz
Tytuł oryginału: Effective SQL: 61 Specific Ways to Write Better SQL
Tłumaczenie: Jakub Hubisz
ISBN: 978-83-283-3563-9
Projekt okładki: Studio Gravite / Olsztyn
Obarek, Pokoński, Pazdrijowski, Zaprucki
Authorized translation from the English language edition, entitled: EFFECTIVE SQL:
61 SPECIFIC WAYS TO WRITE BETTER SQL; ISBN 0134578899; by John L. Viescas;
and by Douglas J. Steele; and by Ben G. Clothier; published by Pearson Education, Inc, publishing as
Addison-Wesley Professional.
Copyright © 2017 by Pearson Education, Inc.
All rights reserved. No part of this book may by reproduced or transmitted in any form or by any means,
electronic or mechanical, including photocopying, recording or by any information storage retrieval system,
without permission from Pearson Education, Inc.
Polish language edition published by HELION S.A. Copyright © 2017.
Some of the examples used in this book originally appeared in SQL Queries for Mere Mortals®: A
Hands-On Guide to Data Manipulation in SQL, Third Edition (Addison-Wesley, 2014). These examples
appear with permission from the authors and Pearson Education Inc.
Wszelkie prawa zastrzeżone. Nieautoryzowane rozpowszechnianie całości lub fragmentu niniejszej
publikacji w jakiejkolwiek postaci jest zabronione. Wykonywanie kopii metodą kserograficzną,
fotograficzną, a także kopiowanie książki na nośniku filmowym, magnetycznym lub innym powoduje
naruszenie praw autorskich niniejszej publikacji.
Wszystkie znaki występujące w tekście są zastrzeżonymi znakami firmowymi bądź towarowymi ich
właścicieli.
Autor oraz Wydawnictwo HELION dołożyli wszelkich starań, by zawarte w tej książce informacje były
kompletne i rzetelne. Nie biorą jednak żadnej odpowiedzialności ani za ich wykorzystanie, ani za związane
z tym ewentualne naruszenie praw patentowych lub autorskich. Autor oraz Wydawnictwo HELION nie
ponoszą również żadnej odpowiedzialności za ewentualne szkody wynikłe z wykorzystania informacji
zawartych w książce.
Materiały graficzne na okładce zostały wykorzystane za zgodą Shutterstock Images LLC.
Wydawnictwo HELION
ul. Kościuszki 1c, 44-100 GLIWICE
tel. 32 231 22 19, 32 230 98 63
e-mail:
helion@helion.pl
WWW:
http://helion.pl
(księgarnia internetowa, katalog książek)
Drogi Czytelniku!
Jeżeli chcesz ocenić tę książkę, zajrzyj pod adres
http://helion.pl/user/opinie/missql
Możesz tam wpisać swoje uwagi, spostrzeżenia, recenzję.
Printed in Poland.
Kup książkę
Poleć książkę
Oceń książkę
Księgarnia internetowa
Lubię to! » Nasza społeczność
Spis treści
Przedmowa .......................................................................................11
Podziękowania ..................................................................................13
O autorach .......................................................................................15
O korektorach merytorycznych ........................................................17
Wprowadzenie ..................................................................................19
Krótka historia SQL ..................................................................................................19
Bazy danych, które wzięliśmy pod uwagę ..................................................................23
Przykładowe bazy .....................................................................................................24
Gdzie znaleźć przykłady ............................................................................................24
Podsumowanie rozdziałów ........................................................................................25
Rozdział 1: Projektowanie modelu danych ..........................................27
Zagadnienie
Zagadnienie
Zagadnienie
Zagadnienie
Zagadnienie
Zagadnienie
Zagadnienie
Zagadnienie
Zagadnienie
1:
2:
3:
4:
5:
6:
7:
8:
9:
Sprawdzenie, czy wszystkie tabele posiadają klucz główny ................27
Eliminacja nadmiarowego przechowywania danych ...........................31
Pozbywanie się powtarzających się grup ............................................34
Przechowywanie jednej właściwości w kolumnie ................................37
Dlaczego przechowywanie danych
wyliczeniowych zazwyczaj nie jest dobrym pomysłem ........................40
Definiowanie kluczy obcych do ochrony integralności referencyjnej ...44
Upewnij się,
że
relacje między tabelami mają sens ............................48
Gdy 3NF to za mało, normalizuj dalej ................................................51
Wykorzystanie denormalizacji w magazynach danych .......................57
Rozdział 2: Programowalność i projektowanie indeksów ....................61
Zagadnienie 10: Podczas tworzenia indeksów weź pod uwagę wartości NULL ............62
Zagadnienie 11: Rozważne tworzenie indeksów
w celu minimalizacji skanowania indeksów i tabel ...........................66
Zagadnienie 12: Wykorzystanie indeksów nie tylko do filtrowania .............................70
Zagadnienie 13: Nie przesadź z wyzwalaczami ..........................................................74
Kup książkę
Poleć książkę
8
Spis tre
ś
ci
Zagadnienie 14: Rozważ użycie indeksu filtrowanego
do wykluczenia lub zawarcia podzbioru danych ..............................78
Zagadnienie 15: Wykorzystanie deklaratywnych
więzów integralności zamiast sprawdzeń programistycznych ...........81
Zagadnienie 16: Rozpoznanie, z jakiego dialektu SQL korzysta Twój produkt,
i wykorzystanie tej informacji ..........................................................83
Zagadnienie 17: Kiedy wykorzystywać wartości wyliczane w indeksach ....................86
Rozdział 3: Gdy nie możesz zmienić projektu .................................... 91
Zagadnienie 18: Wykorzystanie widoków do uproszczenia tego,
czego nie możesz zmienić ................................................................91
Zagadnienie 19: Wykorzystanie ETL do zmiany danych nierelacyjnych w informacje ...97
Zagadnienie 20: Tworzenie tabel z podsumowaniem i ich utrzymywanie .................101
Zagadnienie 21: Wykorzystanie zapytania UNION
do przestawienia nieznormalizowanych danych .............................104
Rozdział 4: Filtrowanie i wyszukiwanie danych ............................... 111
Algebra relacyjna i jej wykorzystanie w SQL ..................................111
Odszukiwanie rekordów niepasujących lub brakujących ...............117
Kiedy do rozwiązania problemu wykorzystać klauzulę CASE .........120
Znane techniki rozwiązywania problemów z wieloma kryteriami ....124
Dzielenie danych, gdy konieczne jest idealne dopasowanie ............129
Poprawne filtrowanie zakresu dat
dla kolumny zawierającej datę i czas .............................................132
Zagadnienie 28: Pisanie zapytań w taki sposób,
aby system na pewno wykorzystał indeksy ....................................136
Zagadnienie 29: Poprawne filtrowanie „prawej” strony „lewego” złączenia ...............140
Zagadnienie
Zagadnienie
Zagadnienie
Zagadnienie
Zagadnienie
Zagadnienie
22:
23:
24:
25:
26:
27:
Rozdział 5: Agregacje ...................................................................... 143
Zagadnienie 30: Jak działa GROUP BY ...................................................................143
Zagadnienie 31: Rozmiar klauzuli GROUP BY .........................................................150
Zagadnienie 32: Wykorzystanie GROUP BY/HAVING do rozwiązywania
skomplikowanych problemów .......................................................152
Zagadnienie 33: Odszukiwanie wartości maksymalnych
i minimalnych bez wykorzystania GROUP BY ...............................157
Zagadnienie 34: Unikanie błędnego wyniku funkcji COUNT()
podczas korzystania z OUTER JOIN ..............................................162
Zagadnienie 35: Uwzględnienie rekordów z wartością zerową
podczas sprawdzania HAVING COUNT(x) < jakaś liczba ................165
Zagadnienie 36: Wykorzystanie DISTINCT do zliczania unikalnych wartości ...........168
Zagadnienie 37: Jak korzystać z funkcji okna .........................................................171
Zagadnienie 38: Tworzenie numerów wierszy i rankingu rekordów
na podstawie innych rekordów ......................................................174
Zagadnienie 39: Tworzenie ruchomej agregacji .......................................................176
Kup książkę
Poleć książkę
Spis tre
ś
ci
9
Rozdział 6: Podzapytania ................................................................ 183
Zagadnienie 40: Gdzie można wykorzystać podzapytania ........................................183
Zagadnienie 41: Różnica pomiędzy podzapytaniami skorelowanymi
i nieskorelowanymi .......................................................................188
Zagadnienie 42: Wykorzystanie wspólnych wyrażeń tabelarycznych
zamiast podzapytań ......................................................................193
Zagadnienie 43: Tworzenie bardziej wydajnych zapytań
z wykorzystaniem złączeń zamiast podzapytań ..............................199
Rozdział 7: Pobieranie i analizowanie metadanych .......................... 203
Zagadnienie 44: Jak korzystać z analizatora zapytań swojego systemu ...................203
Zagadnienie 45: Pobieranie metadanych o Twojej bazie ..........................................213
Zagadnienie 46: Jak działa plan zapytania .............................................................218
Rozdział 8: Iloczyny kartezjańskie .................................................. 227
Zagadnienie 47: Utworzenie kombinacji rekordów pomiędzy dwiema tabelami
i oznaczenie tych rekordów z drugiej tabeli,
które niebezpośrednio odnoszą się do pierwszej .............................227
Zagadnienie 48: Ustalanie rankingu rekordów na podstawie równych kwantyli ......230
Zagadnienie 49:
Łączenie
w pary rekordów tabeli ze wszystkimi innymi rekordami ...235
Zagadnienie 50: Wyświetlanie kategorii i liczby rekordów preferowanych ................239
Rozdział 9: Tabele kalkulacyjne ....................................................... 245
Zagadnienie 51: Wykorzystanie tabeli kalkulacyjnej do generowania rekordów
z wartością NULL na podstawie parametru ....................................245
Zagadnienie 52: Sekwencjonowanie za pomocą tabel kalkulacyjnych
i funkcji okna ................................................................................249
Zagadnienie 53: Generowanie wielu rekordów
na podstawie zakresów wartości w tabelach kalkulacyjnych ........254
Zagadnienie 54: Konwertowanie wartości w jednej tabeli
na podstawie zakresu wartości w tabeli kalkulacyjnej ...................258
Zagadnienie 55: Wykorzystanie tabeli z datami
do uproszczenia obliczeń na datach ..............................................264
Zagadnienie 56: Tworzenie tabeli kalendarza spotkań
z datami zdefiniowanymi w zakresie ..............................................270
Zagadnienie 57: Obracanie tabeli z wykorzystaniem tabeli kalkulacyjnej ................272
Rozdział 10: Modelowanie danych hierarchicznych .......................... 279
Zagadnienie 58: Wykorzystanie modelu listy graniczenia jako punktu startu ..........280
Zagadnienie 59: Wykorzystanie zagnieżdżonych zbiorów
do wydajnego wyszukiwania przy sporadycznych aktualizacjach ...282
Zagadnienie 60: Wykorzystanie zmaterializowanej
ścieżki,
prostej w przygotowaniu i dającej
ograniczone możliwości przeszukiwania ........................................285
Zagadnienie 61: Wykorzystanie domknięcia podległości
dla zaawansowanego wyszukiwania ..............................................287
Kup książkę
Poleć książkę
Zgłoś jeśli naruszono regulamin