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

       

которые могут быть использованы для


Однако SARG’и, которые могут быть использованы для определения стартового и завершающего значений ключа, еще больше сокращают объем ввода/вывода за счет ограничения сканирования индекса некоторым поддеревом. Поэтому оптимизаторы DB2 идут на многое, чтобы использовать как можно больше предикатов в качестве стартового/завершающего условий.

Простые предикаты, включающие простое сравнение столбца со значением ил выражением (например, DEPTNO = 'K55'), являются кандидатами в старт/стоповые условия, равно как и предикаты соединения, «проталкиваемые» (pushed down) на внутреннюю таблицу соединения с вложенными циклами (см. следующий подраздел), и даже подзапрос, возвращающий единственное значение (например, EMP.SALARY= (SELECT MAX(SALARY) FROMEMP)).

Более сложные предикаты, такие как BETWEEN (пара предикатов диапазона), LIKE (пара предикатов диапазона может быть извлечена, если первым символом шаблона LIKE не является метасимвол) и предикат IS NULL также могут использоваться как старт/стопные условия. Может использоваться даже предикат IN <list> либо путем стортировки <list> и успешного использования каждого значения в качестве старт/стопного ключа (в DB2 для MVS), либо использования объединения идентификаторов строк (в DB2/*), описываемого ниже.

Для поддержания эффективности индексных операций наличие выражений и даже преобразований типа на индексном столбце обычно препятствуют использованию этого столбца как условия старта или остановки. Однако в DB2/* типы данных в сравнении не обязаны быть идентичными; они должны лишь удовлетворять требованиям совместимости ANSI между строками и символами.

Оказывается поразительно сложно определить, когда предикаты могут использоваться как старт/стопные условия, и когда их можно применить и как SARG’и. Ключи индекса формируются путем конкатенации значений столбцов из любого числа столбцов индекса, но старт/стопные условия сократят сканирование индекса, только если старшие по порядку (лидирующие, или префиксные) столбцы ограничиваются предикатами.

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