Очевидно, что нет необходимости перестраивать дерево всякий раз, когда
добавляются или удаляются ключи. Однако если ключи добавляются или
удаляются только на одной стороне дерева, то распределение индексных
ключей может стать неравномерным, с изрядным числом разреженных и
даже опустошенных блоков по одну сторону дерева. В этом случае ин-
декс рекомендуется перестроить.
На В-деревьях для извлечения данных по запросу может использо-
ваться механизм быстрого полного просмотра (fast full scan). Этот меха-
низм дает существенные преимущества, если все запрошенные из кон-
кретной таблицы данные могут быть получены только из индекса. При
быстром полном просмотре эффективный многоблочный ввод/вывод,
обычно применяемый для полных просмотров таблиц, используется для
прочтения всех листовых блоков В-дерева. Поскольку число листовых
блоков индекса, скорее всего, намного меньше, чем блоков данных в таб-
лице, для выполнения запроса требуется просмотреть меньшее число
блоков. Поэтому просмотр индекса совершится значительно быстрее, чем
полный просмотр таблицы, хотя иногда неравномерное распределение
ключей снижает эффективность быстрого полного просмотра, поскольку
требуется просмотреть большее число листовых блоков (содержащих
малое или вообще нулевое число элементов). При этом следует учитывать
наличие или отсутствие в таблице пустых значений, которые, как было
сказано выше, в индекс не заносятся.
В-деревья можно использовать для поиска данных, как по условиям
равенства, так и по условиям неравенства. Это единственный тип индек-
сов, который можно использовать для предикатов неравенства: LIKE,
BETWEEN, “>”, “>=”, “<”, “<=”. Исключение представляет случай ис-
пользования предиката LIKE при сравнении с шаблоном вида ‘%выра-
жение’ или ‘_выражение’. В-деревья хранят только непустые значения
ключей, так что можно построить разреженное В-дерево.
Хешированные индексы
Хешированные индексы реализованы в Oracle в виде хешированных
кластеров. Хешированный кластер — специализированный вид организа-
ции данных, обеспечивающий быстрый доступ к строкам таблицы. При
обращении к хешированному кластеру по значению кластерного ключа
применяется функция хеширования (hashing), результатом которой явля-
ется значение хешированного ключа и адрес блока данных. Хеширован-
ный кластер группирует в одном блоке строки, содержащие одинаковые
значения этой функции от ключей. На любой таблице можно построить
только один хешированный индекс.
Доступ к таблице посредством В-дерева требует выполнения, по
меньшей мере, двух операций ввода/вывода, а обычно больше (если таб-