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

Imię

Wydział

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 imię, 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