Показать сообщение отдельно
Старый 18.08.2008, 17:37   #23  
ring is offline
ring
Участник
 
11 / 10 (1) +
Регистрация: 24.06.2008
OPTIMIZER_INDEX_COST_ADJ всего лишь подсказывает CBO что выгодней использовать: FULL TABLE SCAN либо INDEX ACCESS, рассчитать этот параметр можно как отношение одноблочных чтений (обычно при чтении по индексу ) к многоблочным ( полная зачитка таблицы) выраженное в процентах. Естественно чем точнее собрана статистика тем более рациональное решение примет CBO, однако акспата не предоставляет столь точную статистику.При создании индексов и таблиц аксапта посылает COMPUTE STATISTICS на оракл,поэтому лучше собирать вручную с гистограммами используя granularity,estimate_percent,cascade и т.д), тогда ошибки CBO будут сведены к минимуму.
Query Rewrite преобразует SQL-предложение таким образом, что оно получает доступ к заранее подготовленным суммарным таблицам (материализованным представлениям), которые определены на детальных таблицах. Когда целью запроса является суммирование или агрегирование данных по одной или большему числу детальных таблиц (с возможным join-соединением) и существует доступное материализованное представление, которое содержит требуемые данные, то оптимизатор оракл может прозрачно (то есть, самостоятельно) переписать запрос так, чтобы получить из материализованного представления заранее вычисленные.Однако, материализованные представления не во всех ситуациях применимы для перезаписи запросов. Для этого необходимо явно QUERY_ REWRITE_ENABLED=TRUE, использовать опцию ENABLE QUERY REWRITE в SQL-командах CREATE MATERIALIZED а также гарантировать, что учетная запись (account), которой принадлежит материализованное представление, обладает системной привилегией QUERY REWRITE.На работу функциональных индексов эта опция не влияет.

Последний раз редактировалось ring; 18.08.2008 в 17:55.