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