Oracle Database
Индексы
Поиск…
Вступление
Здесь я объясню другой пример, используя пример, как повысить производительность запросов индекса, как индекс уменьшает производительность 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