L10 SQL Indeksy constrainty

29 Pages • 925 Words • PDF • 682.1 KB
Uploaded at 2021-09-24 11:09

This document was submitted by our user and they confirm that they have the consent to share it. Assuming that you are writer or own the copyright of this document, report to us by using this DMCA report button.


SQL Structured Query Language

SQL - indeksy, constrainty.

SQL Structured Query Language

Indeksy Indeks jest specjalną strukturą danych wprowadzoną w celu zwiększenia prędkości wykonywania operacji na tabeli. Indeks w bazie danych wykorzystuje się przy zapytaniach typu DQL (SELECT), które mają na celu wyszukiwanie odpowiednich wartości w bazie danych.

SQL Structured Query Language

Do czego służą indeksy? • Zwiększają wydajność • Zapisują gdzie znajduje się dana wartość • Umożliwiają wyszukiwanie w tabelach bez potrzeby sprawdzania zawartości od początku do końca

SQL Structured Query Language

Indeksy – przykład użycia

Źródło: microsoft.com

SQL Structured Query Language

Kiedy stosować indeksy? Indeks optymalizuje zapytania = stosować wszędzie? Nie: Indeks zajmuje miejsce w bazie danych Indeks optymalizuje odczyt, pogarsza czas zapisu

Stosujmy indeksy na polach, które najczęściej wykorzystujemy w warunku WHERE EXPLAIN – ułatwia podejmowanie decyzji gdzie stosować indeks

SQL Structured Query Language

Rodzaje indeksów SQL Server obsługuje dwa rodzaje indeksów: zgrupowane – grupujące, klastrowe (clustered) niezgrupowane – nieklastrowe (nonclustered)

• •

SQL Structured Query Language

Indeksy zgrupowane nie są odrębnym, zapisanym na dysku obiektem, ale narzucają określony porządek wierszom tabeli zapisanym na kolejnych stronach.

SQL Structured Query Language

Odpowiednikiem indeksu grupującego jest dowolna encyklopedia czy książka telefoniczna — dane w nich zapisane są w pewnym ściśle określonym porządku. Dzięki temu, szukając określonego hasła w encyklopedii, nie musimy jej całej wertować (odpowiednik pełnego przeszukania tabeli), wystarczy znaleźć stronę zawierającą hasła rozpoczynające się taką samą sekwencją znaków jak szukane hasło. Po znalezieniu takiej strony lub kilku stron wystarczy odczytać ich zawartość.

SQL Structured Query Language

Indeksy niezgrupowane są odrębnymi, zapisanymi na osobnych stronach i fizycznie są całkowicie oddzielone od tabeli, dla której zostały utworzone.

SQL Structured Query Language

Odpowiednikiem indeksu tego typu jest indeks znajdujący się na końcu niektórych książek — ponieważ poszczególne hasła indeksu zapisane są w określonym (alfabetycznym) porządku, znalezienie żądanych danych jest szybkie i sprowadza się do przeszukania indeksu, znalezienia hasła i umieszczonych przy nim odnośników, wreszcie do znalezienia na wskazanej stronie szukanych informacji.

SQL Structured Query Language

Większość tabel powinna mieć indeks zgrupowany, a jeśli tabela ma tylko jeden indeks to powinien być to indeks zgrupowany. W SQL Server wszystkie indeksy zgrupowane są różnowartościowe, nawet jeśli zbudujemy indeks bez użycia klauzuli UNIQUE.

SQL Structured Query Language

Podział indeksów Ze względu na liczbę wskazań indeksu: Indeks gęsty (dense) – zawiera wpis dla każdej wartości klucza wyszukiwania, czyli dla każdego rekordu. Indeks rzadki (sparse) – posiada wpis jedynie dla niektórych wartości wyszukiwania (np. bloków).

• •

SQL Structured Query Language

• Indeks rzadki - przykład:

SQL Structured Query Language

Indeks główny Primary index – zwany także podstawowym, jest założony na kluczu podstawowym pliku uporządkowanego i zawiera jeden klucz dla każdego bloku dyskowego. Pierwszy z rekordów danego bloku nazywamy rekordem zaczepienia lub rekordem kotwiczącym. Należy on do grupy indeksów rzadkich.

SQL Structured Query Language

Tworzenie indeksów CREATE INDEX nazwa_indeksu ON tabela (nazwa_kolumny); lub ALTER TABLE nazwa_tabeli ADD INDEX nazwa_indeksu (nazwa_kolumny);

SQL Structured Query Language

Tworzenie indeksu za pomocą CREATE INDEX

Argument UNIQUE nie dopuszcza występowania dwóch takich samych wierszy. Jeśli mimo wszystko zajdzie taka sytuacja, to indeks nie zostanie utworzony.

SQL Structured Query Language

Tworzenie indeksów w istniejącej tabeli:

SQL Structured Query Language

Tworzenie indeksów przy tworzeniu tabeli:

SQL Structured Query Language

Indeks na kilku polach

Jeśli tabela posiada dwa różne indeksy, każdy na pojedynczej kolumnie, baza danych wykona to zapytanie w następujących krokach: wyszuka wszystkie rekordy, gdzie występuje imie; wyszuka wszystkie rekordy, gdzie występuje nazwisko; obliczy część wspólną zbiorów rekordów z pierwszego i drugiego kroku, i zwróci ją jako wynik zapytania. W drugim przypadku, tzn. kiedy indeks jest nałożony na kolumnach (imię, nazwisko), baza danych może wyszukać potrzebne dane w jednym kroku. Sprawdzi równocześnie wartości w polach „imię” i „nazwisko”.

SQL Structured Query Language

Klauzula CONSTRAINT o CONSTRAINT = więź, ograniczenie o Ograniczenie podobne do indeksu, chociaż może również służyć do ustanowienia relacji z inną tabelą. o Za pomocą klauzuli CONSTRAINT w instrukcjach ALTER TABLE i CREATE TABLE można tworzyć i usuwać ograniczenia. o Istnieją dwa typy klauzul CONSTRAINT:  ograniczenie dla jednego pola,  ograniczenie dla większej liczby pól.

SQL Structured Query Language

Podstawowe CONSTRAINT

• NOT NULL, • CHECK, • UNIQUE, • PRIMARY KEY, • FOREIGN KEY

SQL Structured Query Language

CHECK

• Umożliwia sprawdzenie (walidację) wartości przed zapisem do tabeli w bazie danych, np.

Wykonanie operacji z przykładu uniemożliwi wstawianie nowych wierszy do tabeli pracownicy, lub modyfikację istniejących zmieniających płacę zasadniczą na wartość mniejszą lub równą 0.

SQL Structured Query Language

UNIQUE

• Umożliwia sprawdzenie (walidację)

wartości przed zapisem do tabeli w bazie danych pod kątem niepowtarzalności

SQL Structured Query Language

FOREIGN KEY

• Klucz obcy - dodatkowa kolumna lub zbiór kolumn w danej tabeli z wartościami, stanowiącymi klucz główny w innej tabeli

Przykład tabeli pracownicy, gdzie nr_miejsca jest kluczem obcym do kolumny nr_miejsca w tabeli miejsca

SQL Structured Query Language

FOREIGN KEY - tworzenie

SQL Structured Query Language

FOREIGN KEY

• Najważniejsze informacje o Klucz obcy stanowi kolumnę, bądź zbiór kolumn, będących kluczem głównym w innej tabeli. o Łączenie tabel może odbywać się poprzez zapytanie z wykorzystaniem INNER/OUTER JOIN. o Klucze obce tworzy się w T-SQL, dodając odpowiednie wartości w klauzuli CONSTRAINT FOREIGN KEY.

SQL Structured Query Language

Ćwiczenia Pracownicy

Klienci

Miejsca

SQL Structured Query Language

Ćwiczenia 1. Dodaj unikalność pola pesel w tabeli Pracownicy. 2. Wprowadź mechanizm zabezpieczający w tabeli pracownicy przed dodaniem wiersza z premią mniejszą niż 0. 3. Dodaj sprawdzanie (walidację) pola imie w tabeli Pracownicy. Pole imie nie może być krótsze niż 3 znaki. 4. Utwórz klucz obcy w tabeli pracownicy – kolumna nr_miejsca.

SQL Structured Query Language

Podsumowanie

Indeks

Struktura w bazie danych optymalizująca wydajność

Constraint

Ograniczenie, służące zachowaniu spójności danych
L10 SQL Indeksy constrainty

Related documents

29 Pages • 925 Words • PDF • 682.1 KB

794 Pages • 225,837 Words • PDF • 6.2 MB

3 Pages • 667 Words • PDF • 319.2 KB

27 Pages • 1,031 Words • PDF • 425.6 KB