W bazach danych Oracle indeks odnosi się do struktury danych, która zwiększa szybkość operacji pobierania danych w tabeli bazy danych. Może to jednak wiązać się z dodatkowymi operacjami zapisu i przestrzenią dyskową w bazie danych.
Przykładem zastosowania indeksu bazy danych jest system zarządzania relacjami z klientami.
W takim systemie możemy mieć tabelę bazy danych, w której przechowywane są informacje o klientach. Może to obejmować imię i nazwisko, adres, metody płatności, dane kontaktowe itp.
Jeśli tabela zawiera wiele rekordów, być może miliony, wyszukanie w bazie danych konkretnych informacji o klientach może zająć dużo czasu i zasobów. Jest to zjawisko negatywne, szczególnie w bazach danych, w których wydajność jest krytyczna.
Aby to obejść, możemy użyć indeksu bazy danych.
Na przykład możemy utworzyć indeks w kolumnie nazwy klienta, który pozwoliłby systemowi bazy danych szybko znaleźć i pobrać informacje o konkretnym kliencie za pomocą nazwy. Dlatego zamiast przeglądać wszystkie wiersze i kolumny w tabeli, silnik bazy danych używa indeksu tylko do wyszukiwania informacji o kliencie.
W tym samouczku dowiesz się, jak używać polecenia CREATE INDEX w bazie danych Oracle, aby zainicjować nowy indeks.
Oracle Create Index Statement
Poniżej przedstawiono składnię instrukcji CREATE INDEX w bazach danych Oracle:
UTWÓRZ INDEKS nazwa_indeksuON nazwa_tabeli (kolumna1, kolumna2, ...);
Powyższa składnia tworzy indeks o nazwie nazwa_indeksu w tabeli o nazwie nazwa_tabeli przy użyciu określonych kolumn (kolumna1, kolumna2 itd.) jako klucza indeksu.
W Oracle klucz podstawowy to kolumna lub zestaw kolumn, który jednoznacznie identyfikuje każdy wiersz w tabeli. Domyślnie Oracle automatycznie tworzy unikatowy indeks w kolumnach klucza podstawowego tabeli, aby wymusić ograniczenie unikalności i poprawić wydajność wyszukiwania klucza podstawowego.
Jednak w niektórych przypadkach może być konieczne ręczne utworzenie nowego indeksu dla określonej tabeli.
Przyjrzyjmy się kilku przykładom, jak możemy to osiągnąć.
Przykład tworzenia indeksu Oracle
Załóżmy, że mamy tabelę zawierającą informacje o pracownikach, jak pokazano na poniższym wyjściu:
wybierz imię, nazwisko, wynagrodzenie, datę zatrudnienia z PRACOWNICY;
Oracle Utwórz indeks dla pojedynczej kolumny
Załóżmy, że chcemy utworzyć indeks przy użyciu kolumny imię. Możemy uruchomić zapytanie, jak pokazano:
utwórz indeks wyszukiwania imienia na EMPLOYEES(FIRST_NAME);Ta instrukcja CREATE INDEX tworzy indeks o nazwie wyszukiwanie_imienia w tabeli EMPLOYEES, używając kolumny FIRST_NAME jako klucza indeksu. Indeks ten może służyć do poprawy wydajności zapytań wyszukujących pracowników według ich imion.
Po utworzeniu indeksu możemy go użyć do wyszukania określonego pracownika, jak pokazano:
WYBIERZ imię, nazwisko, wynagrodzenie, data_zatrudnieniaOD pracowników
WHERE imię = 'William';
Wynik:
Bez indeksu wyszukiwania imienia system bazy danych musiałby przeskanować całą tabelę PRACOWNICY, aby znaleźć wszystkie wiersze, w których kolumna FIRST_NAME jest równa „William”. Jednak po wprowadzeniu indeksu system bazy danych może szybko wyszukać wiersze w index używając wartości „John” jako klucza, a następnie pobierz żądane wiersze z tabeli, co będzie znacznie szybsze.
Kroki zastosowane podczas tworzenia zapytania można wyświetlić za pomocą polecenia wyjaśniania planu, jak pokazano:
wyjaśnij plan dla SELECT imię, nazwisko, wynagrodzenie, data_zatrudnieniaOD pracowników
WHERE imię = 'William';
Wynikowy plan zapytań:
Przykład 2 — Oracle Create Index z wieloma kolumnami
Podobnie możemy stworzyć indeks składający się z więcej niż jednej kolumny w danej tabeli. Załóżmy na przykład, że chcemy utworzyć indeks składający się z kolumny imię i nazwisko.
Możemy użyć kodu, jak pokazano:
utwórz indeks multi_lookup na PRACOWNIKACH(IMIĘ, NAZWISKO);Ta instrukcja CREATE INDEX tworzy indeks o nazwie multi_lookup w tabeli EMPLOYEES, używając kolumn FIRST_NAME i LAST_NAME jako klucza indeksu.
Po utworzeniu możemy użyć tego indeksu, jak pokazano w przykładowym zapytaniu, jak pokazano:
WYBIERZ imię, nazwisko, wynagrodzenie, data_zatrudnieniaOD pracowników
WHERE imię = 'William' AND nazwisko_nazwisko = 'Kowalski';
Wynikowa wartość:
I tam masz metodę przyspieszenia zapytań do bazy danych za pomocą indeksów w celu ograniczenia zakresu wyszukiwania.
Wniosek
Instrukcja CREATE INDEX w Oracle pozwala nam utworzyć indeks w tabeli, aby poprawić wydajność operacji pobierania danych. Jednak chociaż indeksy mogą poprawić wydajność zapytań, wiążą się również z karami za miejsce w pamięci masowej, co prowadzi do zmniejszenia szybkości operacji zapisu, dlatego używaj ich tylko wtedy, gdy jest to konieczne.