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