Indeksy. Bazy danych 139



Podobne dokumenty
Bazy danych. wprowadzenie teoretyczne. Piotr Prekurat 1

Fizyczna struktura bazy danych w SQL Serwerze

Technologia informacyjna

PROJEKT CZĘŚCIOWO FINANSOWANY PRZEZ UNIĘ EUROPEJSKĄ. Opis działania raportów w ClearQuest

77. Modelowanie bazy danych rodzaje połączeń relacyjnych, pojęcie klucza obcego.

252 Bazy danych. Praca z językiem XML

LABORATORIUM 8,9: BAZA DANYCH MS-ACCESS

060 SQL FIZYCZNA STRUKTURA BAZY DANYCH. Prof. dr hab. Marek Wisła

Laboratorium nr 4. Temat: SQL część II. Polecenia DML

Bazy danych. Andrzej Łachwa, UJ, /15

Indeksowanie w bazach danych

Optymalizacja bazy danych. Bazy danych 265

BAZY DANYCH laboratorium 2 tworzenie bazy danych, podstawy języka SQL

SQL Server Configuration Manager centrum dowodzenia

Administracja i programowanie pod Microsoft SQL Server 2000

170 Bazy danych. Perspektywy

Laboratorium Technologii Informacyjnych. Projektowanie Baz Danych

WPROWADZENIE DO BAZ DANYCH

I. Interfejs użytkownika.

Wprowadzenie do baz danych

Systemy baz danych. mgr inż. Sylwia Glińska

Optymalizacja poleceń SQL Metody dostępu do danych

Laboratorium nr 8. Temat: Podstawy języka zapytań SQL (część 2)

Bazy danych. Wykład IV SQL - wprowadzenie. Copyrights by Arkadiusz Rzucidło 1

5. Bazy danych Base Okno bazy danych

WyŜsza Szkoła Zarządzania Ochroną Pracy MS EXCEL CZ.2

Bazy danych - wykład wstępny

< K (2) = ( Adams, John ), P (2) = adres bloku 2 > < K (1) = ( Aaron, Ed ), P (1) = adres bloku 1 >

Kadry Optivum, Płace Optivum. Jak przenieść dane na nowy komputer?

Przypominacz Instrukcja uŝytkownika

SQL (ang. Structured Query Language)

Plan wykładu. Klucz wyszukiwania. Pojęcie indeksu BAZY DANYCH. Pojęcie indeksu - rodzaje indeksów Metody implementacji indeksów.

Płace Optivum. 1. Zainstalować serwer SQL (Microsoft SQL Server 2008 R2) oraz program Płace Optivum.

Instrukcja zarządzania kontami i prawami

STROJENIE BAZ DANYCH: INDEKSY. Cezary Ołtuszyk coltuszyk.wordpress.com

INSTRUKCJA IMPORTOWANIA

MenadŜer haseł Instrukcja uŝytkownika

Zapytania i wstawianie etykiet z bazy danych do rysunku

Kadry Optivum, Płace Optivum. Jak przenieść dane na nowy komputer?

EKSPLOATACJA SYSTEMÓW TECHNICZNYCH - LAB. Wprowadzenie do zajęć

Optymalizacja wydajności SZBD

Informatyka Ćwiczenie 10. Bazy danych. Strukturę bazy danych można określić w formie jak na rysunku 1. atrybuty

Tadeusz Pankowski

Aplikacje WWW - laboratorium

Laboratorium nr 10. Temat: Połączenia relacji

Połączenie AutoCad'a z bazą danych

Modelowanie hierarchicznych struktur w relacyjnych bazach danych

Program Opakowania zwrotne dla InsERT GT.

KURS ACCESS 2003 Wiadomości wstępne

QUERY język zapytań do tworzenia raportów w AS/400

Autor: Joanna Karwowska

Archiwum DG 2016 PL-SOFT

2017/2018 WGGiOS AGH. LibreOffice Base

wykład Organizacja plików Opracował: dr inż. Janusz DUDCZYK

I Tworzenie prezentacji za pomocą szablonu w programie Power-Point. 1. Wybieramy z górnego menu polecenie Nowy a następnie Utwórz z szablonu

GEO-SYSTEM Sp. z o.o. GEO-RCiWN Rejestr Cen i Wartości Nieruchomości Podręcznik dla administratora systemu Warszawa 2007

Ref. 7 - Język SQL - polecenia DDL i DML

Relacyjne bazy danych. Podstawy SQL

WPROWADZANIE ZLECEŃ POPRZEZ STRONĘ INSTRUKCJA UŻYTKOWNIKA

Wprowadzenie do baz danych

SQL - Structured Query Language -strukturalny język zapytań SQL SQL SQL SQL

ZAPOZNANIE SIĘ ZE SPOSOBEM PRZECHOWYWANIA

5.5. Wybieranie informacji z bazy

Instrukcja instalacji programu SYSTEmSM

Spis treści. I. Czym jest Indeks Haseł 3 II. Wyszukiwanie hasła 4. 1) Alfabetyczna lista haseł 4 2) Wyszukiwarka haseł 4 3) Grupy haseł 6

Konfiguracja modułu alarmowania w oprogramowaniu InTouch 7.11

Rys. 1. Dane umieszczone w oddzielnych zestawieniach

Pracownia Informatyczna Instytut Technologii Mechanicznej Wydział Inżynierii Mechanicznej i Mechatroniki. Podstawy Informatyki i algorytmizacji

Wstęp. Opis ten dotyczy wydziałów orzeczniczych.

Instrukcja do panelu administracyjnego. do zarządzania kontem FTP WebAs.

Inżynieria Programowania Laboratorium 3 Projektowanie i implementacja bazy danych. Paweł Paduch paduch@tu.kielce.pl

Bazy danych 2. Wykład 3. Metodologia projektowania baz danych (projektowanie fizyczne)

BAZY DANYCH. Transakcje. opracowanie: Michał Lech

Konfiguracja oprogramowania w systemach MS Windows dla kont z ograniczonymi uprawnieniami

Microsoft Access materiały pomocnicze do ćwiczeń cz. 1

SQL Server i T-SQL w mgnieniu oka : opanuj język zapytań w 10 minut dziennie / Ben Forta. Gliwice, Spis treści

Ćwiczenie zapytań języka bazy danych PostgreSQL

Technologie informacyjne lab. 2: Bazy danych

Instytut Mechaniki i Inżynierii Obliczeniowej Wydział Mechaniczny Technologiczny Politechnika Śląska

Wykład 2. Relacyjny model danych

T-SQL dla każdego / Alison Balter. Gliwice, cop Spis treści. O autorce 11. Dedykacja 12. Podziękowania 12. Wstęp 15

MATERIAŁY - udostępnianie materiałów dydaktycznych w sieci SGH

Aby pobrać program FotoSender naleŝy na stronę lub i kliknąć na link Program do wysyłki zdjęć Internetem.

Instrukcja uŝytkownika aplikacji modernizowanego Systemu Informacji Oświatowej

OPRACOWANIE: SŁAWOMIR APANOWICZ

Program Zamiana towarów dla Subiekta GT.

Krótki przegląd zapytań

Baza danych. Baza danych to:

Bazy danych TERMINOLOGIA

Konspekt do lekcji informatyki dla klasy II gimnazjum. TEMAT(1): Baza danych w programie Microsoft Access.

Instrukcja Instalacji

1. Tworzenie tabeli. 2. Umieszczanie danych w tabeli

MS Excel 2007 Kurs zaawansowany Obsługa baz danych. prowadzi: Dr inż. Tomasz Bartuś. Kraków:

Założenia do ćwiczeń: SQL Server UWM Express Edition: \SQLEXPRESS. Zapoznaj się ze sposobami użycia narzędzia T SQL z wiersza poleceń.

WSCAD. Wykład 5 Szafy sterownicze

Współpraca Integry z programami zewnętrznymi

Język SQL, zajęcia nr 1

Transkrypt:

Indeksy Bazy danych 139

140 Bazy danych Przegląd zagadnień Dostep fizyczny do danych Optymalizacja dostepu Indeksy i ich zastosowanie Rodzaje indeksów Operacje na indeksach Podsumowanie Laboratorium Wykład stanowi wprowadzenie w świat indeksów. Indeksy są specjalnym mechanizmem bazy danych, który pozwala na przyspieszenie wyszukiwania danych. Jest to niewątpliwie bardzo waŝny parametr charakteryzujący bazę danych. Szczególnie w bazach zawierających wiele tysięcy rekordów mechanizm indeksów jest niezbędny do zapewnienia rozsądnych czasów wyszukiwania danych

Bazy danych 141 Dostęp fizyczny do danych Zrozumienie mechanizmu dostępu do danych zapisanych w bazie danych jest bardzo istotny dla zrozumienia zasad działania indeksów. Jak wiadomo, dane w bazach danych w sposób trwały są zapisywane na dyskach optycznych, magnetycznych lub rodzinach nośników o dostępie bezpośrednim takich jak macierze RAID. Zasady działania tego typu nośników oraz pojęcia głowicy, cylindrów, strony danych itp. powinny być Ci znane z przedmiotu Podstawy Informatyki lub podobnego. SZBD najczęściej nie zajmuje się fizyczną obsługą dysków. W procesie dostępu do danych biorą udział: menedŝer plików i menedŝer dysku. MenedŜer plików ma odpowiednią wiedzę o strukturze systemu plików i jest odpowiedzialny za odszukanie odpowiedniego pliku. MenedŜer dysku ma natomiast niezbędną wiedzę na temat fizycznej organizacji dysku i jest odpowiedzialny za odnalezienie odpowiedniej strony danych. Schemat łańcucha dostępu do danych pokazany jest na rysunku 6.1. Rys.6.1 Schemat łańcucha dostępu do danych

142 Bazy danych Optymalizacja dostępu Zasadniczy czas dostępu do danych bazy to czas odczytu tych danych z dysków. W celu optymalizacji tego dostępu stosuje się metodę zwaną klastrowaniem. Klastrowanie polega na dąŝeniu do utrzymania blisko siebie na dysku rekordów, które są logicznie powiązane. Taka organizacja danych znacznie przyspiesza dostęp do danych. Aby odczytać dane powiązane (i w związku z tym zapewne razem wykorzystywane i odczytywane), głowica nie musi wykonywać duŝych ruchów, a tym samym maleją czasy wyszukiwania). RozróŜniamy przy tym dwa rodzaje klastrowania: - klastrowanie wewnątrzplikowe, - klastrowanie międzyplikowe. Klastrowanie wewnątrzplikowe polega na grupowaniu rekordów obok siebie wewnątrz jednego pliku. Klastrowanie międzyplikowe polega na umieszczaniu na stronie obok siebie rekordów pochodzących z więcej niŝ jednego pliku (tabeli). Optymalizacja dostępu do danych sprowadza się w zasadzie do odpowiedniego zarządzania stronami i decydowania w jaki sposób dane mają być klastrowane. Rys. 6.2Przechowywanie danych na dysku Jak to pokazano na rysunku 6.2, wszystkie dane z tabel relacyjnej bazy danych są przechowywane na stronach danych (ang. page) na dysku. Na przykład w serwerze MS SQL strona danych ma wielkość 8 KB. Strony tworzą większe struktury zwane stertami (ang. heap). Sterta jest kolekcją stron danych. W kaŝdej tabeli dane są przechowywane w kolekcji 8 kilobajowych stron. 8 ciągłych stron tworzy zakres (ang. extent). Wiersze danych nie są na stronach przechowywane w szczególnej kolejności, a strony danych nie są połączone w listę. Jeśli podczas wstawiania danych do strony, strona ulega przepełnieniu, to wtedy następuje podział takiej strony. PoniewaŜ jeden wiersz tabeli musi zmieścić się na stronie danych, więc w serwerze MS SQL występuje ograniczenie co do wielkości wiersza i wynosi ono 8060 bajtów (poniewaŝ na stronie zapisywane są jeszcze metadane - informacje o obiekcie, którego dane przechowuje strona itd., dane nie zajmują dokładnie pełnych 8 KB).

Rys. 6.3 Organizacja danych w serwerze MS SQL Bazy danych 143

144 Bazy danych Indeksy i ich zastosowanie Zastanowimy się teraz nad problemem wyszukiwania danych w tabeli. Na przykład załóŝmy, Ŝe w tabeli Studenci chcemy znaleźć studenta o nazwisku Nowak. Tabela 6.4 Przykładowa tabela bazy studentów ID Nazwisko Imie Wydzial 1 Olacki Jan Elektryczny 2 Babicki Adam Mechaniczny 3 Nowak Jerzy Elektryczny 1 Adamski Adam Elektronika Wiersze zapisane są w bazie w kolejności ich wpisywania i nie są w szczególny sposób sortowane. Co robi wobec tego system, kiedy wydajemy polecenie odnalezienia rekordu zawierającego informacje o Nowaku, np. SELECT imie, nazwisko FROM Studenci WHERE Nazwisko = 'Nowak'? System musi przeszukać całą tabelę (skanowanie wszystkich stron danych zawierających dane z tabeli) i przejrzeć wszystkie rekordy tej tabeli, aby mieć pewność, Ŝe odnalazł rekordy zawierające nazwiska Nowak. Operacja taka jest oczywiście czasochłonna. Podobnie jest, gdy w ksiąŝce poszukujemy jakiegoś hasła (na przykład w podręczniku do baz danych szukamy informacji o indeksach). Aby znaleźć szukaną informację, powinniśmy przeczytać całą ksiąŝkę. Na szczęście niektóre ksiąŝki są wyposaŝone na końcu w specjalne zestawienie haseł - czyli w indeks haseł. Nasze postępowanie przebiega wówczas następująco: 1. Odszukujemy poszukiwane hasło w indeksie, które jest uporządkowany alfabetycznie (co znacznie ułatwia nam odnalezienie hasła). 2. Odczytujemy w indeksie numer strony na której hasło to występuje w ksiąŝce. 3. Otwieramy ksiąŝkę na odpowiedniej stronie. 4. Przeglądamy stronę w poszukiwaniu naszego hasła. 5. Odczytujemy informacje związane z szukanym hasłem. Idea działania indeksów w bazie danych jest dokładnie taka sama. Indeks określony na atrybucie A relacji jest mechanizmem, który pozwala na efektywne wyszukiwanie krotek o ustalonej wartości składowej atrybutu A. Jak więc wyglądałby indeks dla tabeli Studenci? Indeks określany jest dla konkretnego pola. Mówimy wówczas, Ŝe pole to jest polem indeksowanym. W wypadku tabeli Studenci moŝemy jako pole indeksowane wybrać pole nazwisko. Wówczas załoŝenie indeksu na tym polu będzie oznaczało załoŝenie przez system dodatkowej tabeli, w której

Bazy danych 145 umieszczone zostaną nazwiska studentów z tabeli Studenci oraz dostarczy przesłankę, gdzie naleŝy szukać (na której stronie danych) pełnej informacji o danym studencie. Dodatkowo rekordy w tabeli indeksu zostaną posortowane w kolejności alfabetycznej nazwisk. Poszukiwanie naszego studenta Nowaka będzie teraz przebiegać znacznie szybciej. Działanie i rola indeksów polega głównie na przyspieszeniu wyszukiwania rekordów w bazie danych. Niestety obciąŝają one dodatkowo system w czasie aktualizacji lub wstawiania danych. SZBD musi bowiem oprócz umieszczenia rekordu w bazie dokonać teŝ wpisu w tabeli indeksu oraz ponownie posortować rekordy tabeli indeksu. Zalety i wady stosowania indeksów zebrano w tabeli 6.5. Tabela 6.5 Zalety i wady stosowania indeksów Zalety Wady Przyspieszają dostęp do danych Zajmują miejsce na dysku Wymuszają unikatowość wierszy Zwiększają obciąŝenie sysetmu Niektóre z pól warto jest indeksować, inne natomiast nie powinny być nigdy indeksowane. Warto indeksować następujące pola: klucze podstawowe i obce (często są automatycznie indeksowane), pola, po których często następuje wyszukiwanie, pola, do których dostęp następuje w ustalonej, uporządkowanej kolejności. Nie naleŝy indeksować: pól, do których rzadko odwołują się zapytania, pól, które zawierają tylko kilka wartości unikatowych, pól zawierających dane typu image, bit czy obiekt OLE. Indeksy mogą być zakładane na jednym polu lub na większej liczbie pól jednocześnie. Dostęp do danych z wykorzystaniem indeksów nie zawsze jest najlepszym rozwiązaniem. Czasem lepiej jest nie korzystać z indeksów, ale bezpośrednio skanować tabelę. SZBD sprawdza, czy dla danej tabeli istnieją indeksy, a następnie optymalizator zapytań analizuje zapytanie i podejmuje decyzję, czy dostęp do danych będzie prowadzony poprzez skanowanie tabeli, czy przy wykorzystaniu indeksu. Rys. 6.6 Dostęp do danych przy korzystaniu z indeksów

146 Bazy danych Rodzaje indeksów Indeksy moŝna klasyfikować w róŝny sposób. My podzielimy indeksy na dwie grupy: indeksy grupowane (klastrowe), indeksy niegrupowane (nieklastrowe). Indeksy grupowane (ang. clustered) Indeks grupowany działa na podobnej zasadzie jak ksiąŝka telefoniczna. Zawiera strony szybkiego dostępu do danych (w ksiąŝce telefonicznej na początku znajduje się alfabetyczny spis mówiący o tym, na której stronie szukać nazwisk, firm czy instytucji zaczynających się na daną literę alfabetu). Strony te są ułoŝone w odwrócone drzewo i przechowują tylko ułoŝone alfabetycznie wartości indeksowanego pola oraz wskaźniki do stron znajdujących się w niŝszej warstwie drzewa. Na samym dole drzewa znajdują się strony zawierające posortowane wg indeksowanego pola dane (w ksiąŝce telefonicznej zawartość teŝ jest posortowana - wg nazwisk lub nazw firm czy instytucji). Przeszukiwanie indeksu odbywa się z góry na dół na następującej zasadzie: porównywana jest szukana wartość pola indeksowanego z wartościami zapisanymi (i posortowanymi) na stronach indeksu - jeśli znajdzie się wartość "większa" od wartości szukanej, wtedy następuje skok jeden poziom niŝej do strony wskazywanej przez ostatnią pozycję (na ostatnio sprawdzej stronie), która nie była "większa" od szukanej wartości. KaŜda pozycja na stronach zawiera wskaźnik do strony danych jeden poziom niŝej w hierarchii indeksu. Dzięki takiej strukturze przeszukiwane są tylko wybrane strony z danymi, nie zaś wszystkie strony zawierające dane z wybranej tabeli. W indeksie grupowanym strony z danymi wchodzą w skład indeksu i są posortowane po tym polu tabeli, które jest indeksowane. Wynika z tego, Ŝe na indeks grupowany naleŝy przeznaczyć więcej miejsca na dysku niŝ na same dane (posortowane dane + strony indeksu z najwyŝszych warstw). W związku z przedstawioną powyŝej zasadą działania indeksów nie wszystkie zapytania wykorzystują indeksy. Np. zapytanie (w MS SQL Server) SELECT imie, nazwisko FROM osoby WHERE nazwisko LIKE '%mar%' nie wykorzysta indeksu na polu nazwisko, poniewaŝ niemoŝliwe będzie porównanie wartości wzorca z wartościami na stronach indeksu.

Bazy danych 147 Rys. 6.7 Indeks grupowany Indeks grupowany moŝe być dla danej tabeli tylko jeden (jednoznaczne sortowanie danych w indeksie). W MS SQL Server na wszystkich polach będących kluczami głównymi tabel są domyślnie zakładane indeksy grupowane. Indeksy niegrupowane (ang. nonclustered) Indeks niegrupowany działa na podobnej zasadzie jak indeks typowej w ksiąŝce (ale nie w telefonicznej). Indeks niegrupowany budowany jest na stronach danych, które nie są sortowane. Składa się z co najmniej dwu poziomów: poziomu niepomocniczego i poziomów pomocniczych. Na stronach poziomu niepomocniczego podobnie jak w przypadku indeksu grupowanego przechowywane są wartości indeksowanego pola ze wskaźnikami do poziomu niŝej w drzewie indeksu. Strony poziomu pomocniczego zwane teŝ liśćmi (ang. leaf) zawierają wskaźniki do konkretnych stron danych (które nie są posortowane). Wskaźnik taki zawiera następujące dane: ID pliku, numer strony, numer wiersza na stronie. Przeszukiwanie indeksu niegrupowanego odbywa się na podobnej zasadzie, jak w indeksie grupowanym. Po dojściu do poziomu pomocniczego następują skoki do stron danych (do konkretnych wierszy). Rys. 6.8 Indeks niegrupowany

148 Bazy danych Maksymalna ilość indeksów niegrupowanych w pojedynczej tabeli zaleŝy od SZBD. W MS SQL Server 2000 w jednej tabeli moŝna utworzyć maksymalnie 249 takich indeksów. Indeksy mają kluczowe znaczenie dla optymalizacji wydajności baz danych. Dobrze zaprojektowane indeksy mogą znacząco poprawić szybkość operacji przeszukiwania bazy danych (najczęściej wykonywana operacja i dotyczy największych ilości danych), ale źle zaplanowane mogą spowodować efekt odwrotny do poŝądanego. Dlatego naleŝy starannie zaplanować ich strukturę.

Bazy danych 149 Operacje na indeksach Indeksy są tworzone najczęściej automatycznie dla kluczy głównych oraz dla pól, dla którym ma być wymuszona unikatowość. Indeksy moŝna teŝ tworzyć dla innych pól korzystając z polecenia języka SQL CREATE INDEX. PoniŜej podano przykład utworzenia indeksu grupowanego dla tabeli memeber dla pola lastname. Rys. 6.9 Przykład utworzenia indeksu przy uŝyciu języka SQL Indeksy mogą wymuszać unikatowość pól lub nie. Przykład deklaracja indeksu wymuszającego unikatowość pola title_no podano poniŝej. Po załoŝeniu takiego indeksu dodanie do tabeli rekordu o istniejącej juŝ wartości pola title_no nie będzie moŝliwe. Rys. 6.10 Wymuszanie unikatowości pola przez indeks Jak juŝ wspomnieliśmy, indeks moŝe teŝ być zakładany na kilku polach jednocześnie. PoniŜszy przykład pokazuje sposób definiowania unikalnego indeksu na polach isbn i copy_no jednocześnie. ZałoŜenie takiego indeksu spowoduje, Ŝe będzie moŝna wprowadzić do tabeli rekord o istniejącej juŝ wartości pola isbn oraz rekord o istniejącej wartości pola copy_no. Nie będzie natomiast moŝliwe wprowadzenie rekordu, w którym para wartości isbn i copy_no będzie się powtarzać.

150 Bazy danych Rys. 6.11 Przykład indeksu załoŝonego na kilku polach jednocześnie

Bazy danych 151 Podsumowanie Dostep fizyczny do danych Optymalizacja dostepu Indeksy i ich zastosowanie Rodzaje indeksów Operacje na indeksach Indeksy stanowią waŝny mechanizm przyspieszający dostęp do danych zapisanych w bazie i wymuszający unikatowość danych. Z drugiej jednak strony obciąŝają dodatkowo system w czasie wykonywania operacji aktualizacji i wstawiania danych. Dlatego teŝ indeksy naleŝy stosować z rozwagą starannie planując, gdzie jakiego rodzaju indeksy załoŝyć. Decyzje o zakładaniu indeksów wynikają często ze specyfiki uŝytkowania bazy (np. kryteriów wyszukiwania) i często są podejmowane w czasie pierwszego okresu uŝytkowania bazy - okresu dostrajania systemu.

152 Bazy danych Laboratorium W tym ćwiczeniu stworzysz indeks, który zoptymalizuje zadane zapytanie.

Bazy danych 153 Krok 1 - Przygotowanie tabeli Zaloguj się do maszyny wirtualnej ZBD jako uŝytkownik Administrator z hasłem P@ssw0rd. Kliknij Start. Z grupy programów Microsoft SQL Server 2005 uruchom SQL Server Management Studio. W oknie logowania kliknij Connect. Kliknij w menu głównym programu Management Studio na File. Kliknij Open - File. Odszukaj plik C:\Labs\Lab06\Indexes.sql i kliknij Open. Zaznacz fragment, który tworzy nową tabelę Sales.SalesOrderDetailCopy przez skopiowanie struktury i danych z tabeli Sales.SalesOrderDetail (patrz kod poniŝej). USE AdventureWorks GO SELECT * INTO Sales.SalesOrderDetailCopy FROM Sales.SalesOrderDetail Wciśnij F5, aby uruchomić zaznaczony kod. Krok 2 - Wykonanie zapytania bez optymalizacji Wciśnij kombinację klawiszy Ctrl+M, by włączyć pokazywanie graficznego planu wykonania zapytania. Zaznacz fragment, który włącza wyświetlanie statystyk wejścia / wyjścia (ilości odczytywanych stron danych) i wykonuje zapytanie do optymalizacji (patrz kod poniŝej). -- Statystyki i plan wykonania (Ctrl+M) SET STATISTICS IO ON -- Zapytanie do optymalizacji SELECT ProductID,OrderQty,UnitPrice FROM Sales.SalesOrderDetailCopy WHERE Unitprice > 100 AND OrderQty > 15 PowyŜsze zapytanie jest typowym zapytaniem wykonywanym w bazach danych. Zawiera klauzulę WHERE, która filtruje tabelę i ogranicza ilość wyświetlanych rekordów. Wynik zapytania nie jest tak istotny, jak odczyty w zakładkach Messages i Execution Plan (plan wykonania). W zakładce Messages sprawdź, Ŝe ilość odczytanych stron wynosi ponad 1400. Plan wykonania pokazuje zaś, Ŝe nastąpiło skanowanie tabeli, czyli przeczytanie jej wszystkich rekordów.

154 Bazy danych Krok 3 - Stworzenie indeksu Zaznacz fragment, który tworzy indeks (patrz kod poniŝej). -- Indeks z opcja INCLUDE CREATE INDEX ind_sod_include ON Sales.SalesOrderDetailCopy(UnitPrice,OrderQty) INCLUDE (ProductID) Wciśnij F5, aby uruchomić zaznaczony kod. PowyŜszy kod tworzy indeks nieklastrowany na dwóch kolumnach (UnitPrice, OrderQty). Dodatkowo w strukturze indeksu na najniŝszym poziomie umieszczone zostają wartości z kolumny ProductID. Dzięki temu indeks pokrywa zapytanie, czyli w indeksie zawarte są wszystkie kolumny uŝyte w zapytaniu. Krok 4 - Wykonanie zapytania z optymalizacją Zaznacz fragment, który wykonuje ponownie zapytanie do optymalizacji (patrz kod poniŝej). SELECT ProductID,OrderQty,UnitPrice FROM Sales.SalesOrderDetailCopy WHERE Unitprice > 100 AND OrderQty > 15 Wciśnij F5, aby uruchomić zaznaczony kod. Tym razem zapytanie wykonane zostało z planem wykonania (patrz zakładka Execution Plan), który pokazuje, Ŝe nastąpiło przeszukanie indeksu (index seek). Ponadto w zakładce Messages zauwaŝysz, Ŝe ilość odczytanych stron zmalała niemal 10-ciokrotnie. Zaznacz i uruchom (F5 ) kod oznaczony komentarzem Clean-up, by usunąć utworzony indeks (wymagane do następnego ćwiczenia). Nie myśl, Ŝe najlepiej jest utworzyć indeks na wszystkich kolumnach tabeli jednocześnie. Taki indeks powoduje, Ŝe kaŝda modyfikacja danych wykonywana jest dłuŝej, a ponadto dane z tabeli są przechowywane w plikach danych w dwóch miejscach (czyli potrzebna jest dodatkowa przestrzeń dyskowa).