Поиск…


Вступление

Здесь я объясню другой пример, используя пример, как повысить производительность запросов индекса, как индекс уменьшает производительность DML и т. Д.

индекс b-дерева

CREATE INDEX ord_customer_ix ON orders (customer_id);

По умолчанию, если мы ничего не упоминаем, oracle создает индекс в качестве индекса b-дерева. Но мы должны знать, когда его использовать. Индекс B-дерева хранит данные в виде двоичного дерева. Как мы знаем, индекс - это объект схемы, который хранит какую-либо запись для каждого значения для индексированного столбца. Таким образом, всякий раз, когда в этих столбцах происходит поиск, он проверяет в индексе точное местоположение этой записи для быстрого доступа. Несколько вопросов об индексировании:

  • Для поиска записи в индексе используется какой-то алгоритм бинарного поиска.
  • Когда мощность данных высока, индекс b-дерева идеально подходит для использования.
  • Индекс делает DML медленным, так как для каждой записи должна быть одна запись в индексе для индексированного столбца.
  • Поэтому, если это не необходимо, нам следует избегать создания индекса.

Растровый индекс

CREATE BITMAP INDEX 
emp_bitmap_idx
ON index_demo (gender);
  • Индекс битмапа используется, когда мощность данных низкая.
  • Здесь гендер имеет ценность с низкой мощностью. Ценностями могут быть мужчины, женщины и другие.
  • Таким образом, если мы создадим двоичное дерево для этих 3 значений во время поиска, у него будет ненужный траверс.
  • В растровых структурах создается двумерный массив с одним столбцом для каждой строки в индексируемой таблице. Каждый столбец представляет собой отдельное значение в растровом индексе. Этот двумерный массив представляет каждое значение в индексе, умноженное на количество строк в таблице.
  • При времени поиска строки Oracle распаковывает растровое изображение в буферы данных RAM, поэтому его можно быстро сканировать для сопоставления значений. Эти совпадающие значения доставляются в Oracle в виде списка Row-ID, и эти значения Row-ID могут напрямую обращаться к необходимой информации.

Функциональный индекс

CREATE INDEX first_name_idx ON user_data (UPPER(first_name));


SELECT *
FROM   user_data
WHERE  UPPER(first_name) = 'JOHN2';
  • Функциональный индекс означает, создавая индекс, основанный на функции.
  • Если в поиске (где предложение) часто используется какая-либо функция, лучше создать индекс, основанный на этой функции.
  • Здесь, в примере, для поиска используется функция Upper () . Таким образом, лучше создать индекс, используя верхнюю функцию.


Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow