Oracle Database
Indeksy
Szukaj…
Wprowadzenie
Tutaj wyjaśnię inny indeks na przykładzie, w jaki sposób indeks zwiększa wydajność zapytań, jak indeks zmniejsza wydajność DML itp
indeks b-drzewa
CREATE INDEX ord_customer_ix ON orders (customer_id);
Domyślnie, jeśli nic nie wspominamy, oracle tworzy indeks jako indeks b-drzewa. Ale powinniśmy wiedzieć, kiedy go użyć. Indeks B-drzewa przechowuje dane w formacie drzewa binarnego. Jak wiemy, indeks jest obiektem schematu, który przechowuje pewien wpis dla każdej wartości dla indeksowanej kolumny. Tak więc, za każdym razem, gdy wyszukiwanie odbywa się w tych kolumnach, sprawdza on w indeksie dokładną lokalizację tego rekordu, aby uzyskać szybki dostęp. Kilka punktów na temat indeksowania:
- Aby wyszukać wpis w indeksie, zastosowano jakiś algorytm wyszukiwania binarnego.
- Gdy liczność danych jest wysoka, indeks b-drzewa jest idealny do użycia.
- Indeks spowalnia DML, ponieważ dla każdego rekordu powinien być jeden wpis w indeksie dla kolumny indeksowanej.
- Jeśli nie jest to konieczne, powinniśmy unikać tworzenia indeksu.
Indeks bitmap
CREATE BITMAP INDEX
emp_bitmap_idx
ON index_demo (gender);
- Indeks bitmapowy jest używany, gdy liczność danych jest niska.
- Płeć ma tutaj wartość o niskiej liczności. Wartości mogą być męskie, żeńskie i inne.
- Tak więc, jeśli podczas wyszukiwania utworzymy drzewo binarne dla tych 3 wartości, będzie ono miało niepotrzebny ruch.
- W strukturach bitmapowych tworzona jest dwuwymiarowa tablica z jedną kolumną dla każdego wiersza w indeksowanej tabeli. Każda kolumna reprezentuje odrębną wartość w indeksie bitmapowym. Ta dwuwymiarowa tablica reprezentuje każdą wartość w indeksie pomnożoną przez liczbę wierszy w tabeli.
- W czasie pobierania wiersza Oracle dekompresuje mapę bitową do buforów danych RAM, aby można ją było szybko przeskanować w celu znalezienia pasujących wartości. Te pasujące wartości są dostarczane do Oracle w postaci listy identyfikatorów wierszy, a te wartości identyfikatorów wierszy mogą bezpośrednio uzyskiwać dostęp do wymaganych informacji.
Indeks oparty na funkcjach
CREATE INDEX first_name_idx ON user_data (UPPER(first_name));
SELECT *
FROM user_data
WHERE UPPER(first_name) = 'JOHN2';
- Indeks oparty na funkcji oznacza tworzenie indeksu na podstawie funkcji.
- Jeśli w wyszukiwaniu (gdzie klauzula) często używana jest dowolna funkcja, lepiej jest utworzyć indeks na podstawie tej funkcji.
- Tutaj, w tym przykładzie, do wyszukiwania używana jest funkcja Upper () . Dlatego lepiej jest utworzyć indeks za pomocą funkcji górnej.
Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow