Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Правильно ли считается кост?  [new]
Cutgun
Member

Откуда:
Сообщений: 32
Вообщем то тривиальная задача получить минимальное значение из таблички с историчностью. Но наткнулся на такую странность.

SELECT pa.ag_contract_header_id
/*      min(pa.p_policy_agent_id) OVER(PARTITION BY pa.policy_header_id) min_id */
        FROM p_policy_agent pa
       WHERE pa.policy_header_id = 1
     ORDER BY pa.p_policy_agent_id

Plan
SELECT STATEMENT, GOAL = ALL_ROWS			Cost=3	Cardinality=1	Bytes=17
 SORT ORDER BY			Cost=3	Cardinality=1	Bytes=17
  TABLE ACCESS BY INDEX ROWID	Object owner=INS	Object name=P_POLICY_AGENT	Cost=2	Cardinality=1	Bytes=17
   INDEX RANGE SCAN	Object owner=INS	Object name=IX_P_POLICY_AGENT_01	Cost=1	Cardinality=1	
Как не трудно заметить итоговый кост = 3

SELECT /*pa.ag_contract_header_id*/
      min(pa.p_policy_agent_id) OVER(PARTITION BY pa.policy_header_id) min_id 
        FROM p_policy_agent pa
       WHERE pa.policy_header_id = 1
/*     ORDER BY pa.p_policy_agent_id*/

Plan
SELECT STATEMENT, GOAL = ALL_ROWS			Cost=2	Cardinality=1	Bytes=11
 WINDOW BUFFER			Cost=2	Cardinality=1	Bytes=11
  TABLE ACCESS BY INDEX ROWID	Object owner=INS	Object name=P_POLICY_AGENT	Cost=2	Cardinality=1	Bytes=11
   INDEX RANGE SCAN	Object owner=INS	Object name=IX_P_POLICY_AGENT_01	Cost=1	Cardinality=1	
А при использовании аналитики кост уже равен 2

Собственно вопрос действительно ли кост меньше или и как в таком случае у аналитики получается его уменьшить?
зы сверху оба селекта естественно обернуты rownum = 1
23 сен 08, 17:01    [6218785]     Ответить | Цитировать Сообщить модератору
 Re: Правильно ли считается кост?  [new]
Cutgun
Member

Откуда:
Сообщений: 32
Тему можно закрывать
Забыл что (PARTITION BY pa.policy_header_id ORDER BY pa.p_policy_agent_id) =)
23 сен 08, 17:11    [6218861]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить