Классика баз данных - статьи

       

Поэтому последовательность команд NEXT при


Поэтому последовательность команд NEXT при индексном сканировании производит последовательное чтение листовых страниц индекса, получая идентификаторы кортежей, соответствующих ключу, и используя их для нахождения и возврату пользователю кортежей данных в порядке значений ключа. Листовые страницы индекса связаны в список, так что при выполнении команды NEXT не требуются обращения к страницам индекса более высокого уровня.

При сегментном сканировании затрагиваются все непустые страницы сегмента, независимо от того, содержат ли они кортежи заданного отношения. Однако каждая страница затрагивается только один раз. При просмотре всего отношения через индексное сканирование каждая страница индекса затрагивается только один раз, но страница данных может проверяться более одного раза, если имеются два кортежа, не являющиеся "близкими" в порядке индекса. Если кортежи вставляются в сегмент в порядке индекса, и если эта физическая близость, соответствующая значениям ключа индекса, поддерживается, то мы говорим, что индекс является кластеризованным. У кластеризованного индекса имеется то свойство, что при сканировании через этот индекс будет затрагиваться только один раз не только каждая индексная страница, но и каждая страница данных, содержащая кортеж данного отношения.

Через индекс можно сканировать и не все отношение целиком. Можно указывать стартовое и стоповое значения, чтобы сканировать только те кортежи, ключ которых находится в диапазоне индексных значений. И для индексного, и для сегментного сканирования можно также задавать набор предикатов, называемых аргументами поиска (Search ARGumentS, SARGS), которые применяются к кортежу, прежде чем он возвращается в программу, обратившуюся к RSI. Если кортеж удовлетворяет предикатам, он возвращается; иначе сканирование продолжается до тех пор, пока либо не будет найден кортеж, удовлетворяющий SARGS, либо не исчерпается сегмент или заданный диапазон индексных значений. Это сокращает расходы путем устранения накладных расходов на вызовы RSI для кортежей, которые могут быть разумным образом отвергнуты внутри RSS.Не все предикаты находятся в форме, которая может стать SARGS. Sargable предикат - это предикат, имеющий вид (или приводимый к виду) "ncolumn comparison-operator value". SARGS представляются как булевские выражения из таких предикатов в дизъюнктивной нормальной форме.


Содержание  Назад  Вперед