Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Informix [игнор отключен] [закрыт для гостей] / Вышла новая версия IDS 10.00.xC6 / 1 сообщений из 1, страница 1 из 1
25.01.2007, 14:38
    #34282119
Andron
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вышла новая версия IDS 10.00.xC6
В Informix 10.00.xC6 добавлен новый способ работы оптимизатора с индексами - Index self-join path , который выглядит как объединение большого кол-ва маленьких сканов индекса:

The query optimizer now supports a new type of index scan, called an index self-join path, that uses only subsets of the full range of a composite index. An index self-join is a type of index scan that you can think of as a union of many small index scans, each one with a single unique combination of lead-key columns and filters on non-lead-key columns. The union of small index scans results in an access path that uses only subsets of the full range of a composite index. The table is logically joined to itself, and the more selective non-leading index keys are applied as index-bound filters to each unique combination of the leading key values.

Для его использования по умолчанию (если оптимизатор сочтет нужным конечно) надо включить соотв. параметр в onconfig. Для оптимизатора определены также соотв. директивы. Также для использования этого типа скана требуется чтобы данные соотв. ряду условий:

* The index does not have functional keys, user-defined types, built-in opaque types, or non-B-tree indexes
* Data distribution statistics are available for the index key column under consideration
* The number of rows in the table is at least ten times the number of unique combinations of all possible lead-key column values
* The INDEX_SELFJOIN ONCONFIG parameter has been set to 1

Я провел небольшой синтетический тест, у меня запрос выполняется быстро, и все страницы помещаются в буферах, поэтому померял buffreads для сессии в каждом варианте (измерение времени выполнения запроса было бы достаточно субъективно, поскольку может быть много внешних факторов, например другие приложения на сервере), - в случае использования нового типа скана кол-во чтений буферов меньше на моем запросе в 7 раз (левых сессий на информиксе для чистоты эксперимента не было).
Стоимость запроса для Index self-join path также оказалась ниже в 4 раза:

QUERY:
------
SELECT {+AVOID_INDEX_SJ(ttiitm001001 tiitm0010016abaan)} a.t_llcd,a.t_ncst,a.t_mrpi FROM ttiitm001001 a WHERE (a.t_mrpi >= 129) AND
(a.t_mrpi <= 237) AND (a.t_llcd >= 1) AND
(a.t_llcd <= 8) AND (a.t_ncst >= 1) AND (a.t_ncst <= 3)
ORDER BY 1, 2, 3


DIRECTIVES FOLLOWED:
AVOID_INDEX_SJ ( ttiitm001001 tiitm0010016abaan )
DIRECTIVES NOT FOLLOWED:

Estimated Cost: 292
Estimated # of Rows Returned: 1037

1) informix.a: INDEX PATH

(1) Index Keys: t_llcd t_ncst t_mrpi t_item (Key-Only) (Serial, fragments: ALL)
Lower Index Filter: informix.a.t_llcd >= 1 AND (informix.a.t_mrpi >= 129 ) AND (informix.a.t_ncst >= 1 )
Upper Index Filter: informix.a.t_llcd <= 8 AND (informix.a.t_mrpi <= 237 ) AND (informix.a.t_ncst <= 3 )
Index Key Filters: (informix.a.t_mrpi >= 129 ) AND
(informix.a.t_mrpi <= 237 ) AND
(informix.a.t_ncst <= 3 ) AND
(informix.a.t_ncst >= 1 )


QUERY:
------
SELECT a.t_llcd,a.t_ncst,a.t_mrpi FROM ttiitm001001 a WHERE (a.t_mrpi >= 129) AND
(a.t_mrpi <= 237) AND (a.t_llcd >= 1) AND
(a.t_llcd <= 8) AND (a.t_ncst >= 1) AND (a.t_ncst <= 3)
ORDER BY 1, 2, 3


Estimated Cost: 77
Estimated # of Rows Returned: 1037

1) informix.a: INDEX PATH

(1) Index Keys: t_llcd t_ncst t_mrpi t_item (Key-Only) (Serial, fragments: ALL)
Index Self Join Keys (t_llcd t_ncst )
Lower bound: informix.a.t_llcd >= 1 AND (informix.a.t_ncst >= 1 )
Upper bound: informix.a.t_llcd <= 8 AND (informix.a.t_ncst <= 3 )

Lower Index Filter: (informix.a.t_llcd = informix.a.t_llcd AND informix.a.t_ncst = informix.a.t_ncst ) AND informix.a.t_mrpi >= 129
Upper Index Filter: informix.a.t_mrpi <= 237
Index Key Filters: (informix.a.t_ncst <= 3 ) AND
(informix.a.t_ncst >= 1 )
...
Рейтинг: 0 / 0
Форумы / Informix [игнор отключен] [закрыт для гостей] / Вышла новая версия IDS 10.00.xC6 / 1 сообщений из 1, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]