Индексы на базе В*-деревьев



бет8/10
Дата01.11.2022
өлшемі239.92 Kb.
#463783
1   2   3   4   5   6   7   8   9   10
Все лекции (1) (1) (1)

Expression Filter


Компонент Expression Filter (фильтр выражений), включенный в версию Oracle Database 10g, применяет Rules Manager для работы с выражениями. Выражение - еще один тип объектов, в котором хранятся атрибуты, вычисляемые фильтром выражений. В таблицу, где хра- нятся атрибуты выражений, вы добавляете столбец типа VARCHAR2, записываете в этот столбец выражения посредством встроенного PL/ SQL-пакета и с помощью стандартных SQL- конструкций задаете значения для выражения. Для сравнения значений с выражением служит оператор EVALUATE в условии WHERE SQL-команды.
Выражения можно использовать для определения сложных характеристик строк, так как у выражения может быть много атрибутов. С помощью выражений можно реализовать отношение многие-ко-многим без промежуточной таблицы; в этом случае для соединения применяются выражения из двух таблиц.
В редакции Enterprise Edition с выражением можно связать индекс. Это позволяет получить выигрыш в производительности, который дают индексы, в применении к величинам, определенным как выражения.

Оптимизация запросов


Все рассмотренные выше структуры данных - это сущности, определенные на стороне сервера. Пользователи запрашивают у сервера Oracle данные, предъявляя запросы к базе данных. Наилучший способ доступа к запрошенным данным определяет компонент Oracle, называемый оптимизатором запросов.
Одно из величайших достоинств реляционной базы данных - возможность обращаться к данным без указания путей доступа к ним. Получив от пользователя запрос, СУБД Oracle должна решить, как осуществить доступ к данным. Процесс выработки решения называется оптимизацией запроса, потому что Oracle ищет оптимальный способ выборки данных. Способ выборки называется путем выполнения. Выбрать наиболее эффективный способ доступа к данным нелегко, потому что вариантов может быть много.
Например, даже в случае, когда запрос относится только к одной таблице, у сервера
Oracle есть следующие возможности:

  • найти ROWID запрошенных строк с помощью индекса, а затем извлечь эти строки из таблицы;

  • просмотреть всю таблицу и найти подходящие строки - это называется полным сканированием таблицы.

Хотя обычно выборка по индексу гораздо быстрее, процесс получения значений из индекса требует дополнительных операций ввода/выво- да. Оптимизация запроса может иногда свестись к анализу того, имеются ли в запросе условия относительно значений столбцов, храня- щихся в индексе. Использование значений из индекса для выборки нужных строк требует меньше операций ввода/вывода и потому оказывается эффективнее, чем извлечение всех данных из таблицы с последующим применением к ним условий отбора.
Еще один фактор, учитываемый при определении оптимального плана выполнения запроса, - наличие в запросе предложения ORDER BY, которое можно было бы реализовать автоматически за счет использования уже отсортированного индекса. Напротив, если таблица мала, оптимизатор может решить, что выгоднее просто считать из нее все блоки, проигнорировав индекс, так как оценочная стоимость ввода/ вывода для индекса и таблицы оказывается выше, чем для одной лишь таблицы.
Оптимизатор должен принимать важные решения, даже когда в запросе участвует только одна таблица. Если же запрос более сложен, например включает много соединяемых между собой таблиц или содержит запутанный критерий отбора и несколько уровней сортировки, то трудность стоящей перед оптимизатором задачи возрастает многократно.
До выхода версии Oracle Database 10g* вам на выбор предлагалось два разных оптимизатора запросов - по синтаксису (rule-based optimizer) и по стоимости (cost-based optimizer); они описаны в следующих разделах. В Oracle Database 10g* поддержка оптимизатора по синтаксису была упразднена. Встречающиеся ниже упоминания об оптимизаторе по синтаксису оставлены только для справки и имеют смысл, лишь если вы работаете со старыми версиями Oracle.


Достарыңызбен бөлісу:
1   2   3   4   5   6   7   8   9   10




©dereksiz.org 2024
әкімшілігінің қараңыз

    Басты бет