Voce poderia usar o hint /*+ no_merge */ ou o que eu prefiro rescrever a
query.

select st_tarefa
  from (
select st_tarefa, max(dt_inicio) over (partition by co_tarefa order by
co_tarefa ) mx_dtini,
       dt_inicio
  from siops.tb_log_tarefa
 where co_tarefa = 10
       )
 where mx_dtini = dt_inicio
/


On 4/4/06, Nelson Cartaxo <[EMAIL PROTECTED]> wrote:
>
> Mais uma duvida.  O pq do "MALDITO" merge join.  Isso que ta quebrando a
> query.  Existe algum parametro que altere isso?  Se uso o hint de rule ele
> vai bem. Veja
>
> PLAN_TABLE_OUTPUT
>
> ----------------------------------------------------------------------------
> ------------------------
>
> -----------------------------------------------------------------------
> | Id  | Operation            |  Name          | Rows  | Bytes | Cost  |
> -----------------------------------------------------------------------
> |   0 | SELECT STATEMENT     |                |       |       |       |
> |*  1 |  FILTER              |                |       |       |       |
> |*  2 |   TABLE ACCESS FULL  | TB_LOG_TAREFA  |       |       |       |
> |   3 |   SORT AGGREGATE     |                |       |       |       |
> |*  4 |    TABLE ACCESS FULL | TB_LOG_TAREFA  |       |       |       |
> -----------------------------------------------------------------------
>
> Quando faz acesso full vai super rápido.
>
> Obrigado mais uma vez.
>
>
> Atenciosamente,
> Nelson Cartaxo
> DBA ORACLE
> -----Mensagem original-----
> De: jlchiappa [mailto:[EMAIL PROTECTED]
> Enviada em: terça-feira, 4 de abril de 2006 15:57
> Para: [email protected]
> Assunto: Re: RES: RES: [oracle_br] Ajuda com Query Urgente
>
>
> Colega, PMFJI mas uma das mais importantes coisas quando se analiza
> um provável caso de full-scan "errado" é a número de linhas que cada
> passo do plano traz : isso já aparece direitonho na PLAN_TABLE da
> versão 9i, mas o seu script de consulta à PLAN_TABLE pelo jeito não o
> está mostrando (que pelo famigerado lpad deduzo ser uma versão
> ANTIGA, dessas copiadas pelos sites/livros de Oracle) : sugiro que vc
> APOSENTE esse morto-vivo aí, e passe a usar o seguinte no 9i :
>
> [EMAIL PROTECTED]:SQL>get explain
>   1  select distinct statement_id from plan_table;
>   2  accept V_STATEMENT_ID prompt 'Statement a Explicar (respeitando
> maiúsculas/minusc.) :'
>   3* select * from table(dbms_xplan.display
> ('PLAN_TABLE', '&V_STATEMENT_ID', 'ALL'));
> [EMAIL PROTECTED]:SQL>
>
> e tenha no 9i o parâmetro statistics_level ao menos como TYPICAL,
> olha só como é mais completinho o report assim :
>
> [EMAIL PROTECTED]:SQL>ed
> Gravou arquivo afiedt.buf
>
>   1  explain plan set statement_id='P1' for
>   2  select *
>   3    from (select e.empno, d.dname
>   4            from emp e ,dept d
>   5           where e.deptno=d.deptno
>   6             and sal > 1000
>   7           order by sal desc
>   8          )
>   9* where rownum < 10
> [EMAIL PROTECTED]:SQL>/
>
> Explicado.
>
> [EMAIL PROTECTED]:SQL>@explain
>
> STATEMENT_ID
> ------------------------------
> P1
>
> Statement a Explicar (respeitando maiúsculas/minusc.) :P1
> antigo   1: select * from table(dbms_xplan.display
> ('PLAN_TABLE', '&V_STATEMENT_ID', 'ALL'))
> novo   1: select * from table(dbms_xplan.display
> ('PLAN_TABLE', 'P1', 'ALL'))
>
> PLAN_TABLE_OUTPUT
> -------------------------
>
> ----------------------------------------------------------------------
> ------
> |Id |Operation                      |  Name         |Rows |Bytes|Cost
> (%CPU)|
> ----------------------------------------------------------------------
> ------
> | 0 |SELECT STATEMENT               |               |    9|  198|
> 21   (5)|
> |*1 | COUNT STOPKEY                 |               |     |
> |          |
> | 2 |  VIEW                         |               |   13|
> 286|          |
> |*3 |   SORT ORDER BY STOPKEY       |               |   13|  247|
> 21   (5)|
> |*4 |    TABLE ACCESS BY INDEX ROWID| EMP           |    2|   16|
> 2  (50)|
> | 5 |     NESTED LOOPS              |               |   13|  247|
> 9  (12)|
> | 6 |      TABLE ACCESS FULL        | DEPT          |    6|   66|
> 2   (0)|
> |*7 |      INDEX RANGE SCAN         | IDX_DEPTNO_JOB|    5|     |
> 1   (0)|
> ----------------------------------------------------------------------
> ------
>
> Predicate Information (identified by operation id):
> ---------------------------------------------------
>
>    1 - filter(ROWNUM<10)
>    3 - filter(ROWNUM<10)
>    4 - filter("E"."SAL">1000)
>    7 - access("E"."DEPTNO"="D"."DEPTNO")
>
> 21 linhas selecionadas.
>
> [EMAIL PROTECTED]:SQL>
>
> ==< taí ó, mostrando direitinho que operação cada passo está fazendo,
> quem está sendo filtrado, as LINHAS e os BYTES envolvidos em cada
> passo, muito mais completo - a tua query extrai o custo da
> PLAN_TABLE, legal, mas e o resto ?
>
> []s
>
> Chiappa
>
> --- Em [email protected], Nelson Cartaxo
> <[EMAIL PROTECTED]> escreveu
> >
> > Marcio, talvez eu possa tentar com a equipe de desenvolvimento que
> mudem a
> > query, desde que tenha os mesmos resultados.Se vc tiver alguma dica
> > agradeço.
> >
> > Segue os planos de desenvolmimento (9.2.0.7) e produção (8.1.7.4)
> >
> > Resultado na Base de Produção
> >
> > LPAD('',2*(LEVEL-1))||OPERATION
> > --------------------------------------------------------------------
> --------
> > ------------------------
> > OPTIONS                        Object
> POSITION
> > COST
> > ------------------------------ ------------------------------ ------
> ----
> > ----------
> > SELECT STATEMENT
> >
> 165
> > 165
> >
> > FILTER
> >
>    1
> >
> > TABLE ACCESS
> > FULL
> TB_LOG_TAREFA                           1
> > 165
> >
> > SORT
> >
> AGGREGATE
> 2
> >
> > TABLE ACCESS
> > FULL
> TB_LOG_TAREFA                           1
> > 165
> >
> >
> >
> > Resultado na Base de Desenvolvimento
> >
> > LPAD('',2*(LEVEL-1))||OPERATION
> > --------------------------------------------------------------------
> --------
> > ------------------------
> > OPTIONS                        Object
> POSITION
> > COST
> > ------------------------------ ------------------------------ ------
> ----
> > ----------
> > SELECT STATEMENT
> >
> 2165784
> > 2165784
> >
> > FILTER
> >
>    1
> >
> > SORT
> > GROUP
> BY                                                               1
> > 2165784
> >
> > MERGE JOIN
> >
> CARTESIAN
> 1
> > 1965122
> >
> > TABLE ACCESS
> > FULL
> TB_LOG_TAREFA                           1
> > 233
> >
> > BUFFER
> >
> SORT
> 2
> > 2165551
> >
> > TABLE ACCESS
> > FULL
> TB_LOG_TAREFA                           1
> > 233
> >
> >
> > Parametros 9.2.0.7
> >
> > NAME                                 Type            VALUE
> > ------------------------------------ ---------------
> > ----------------------------
> > optimizer_dynamic_sampling           integer         1
> > optimizer_features_enable            string          9.2.0
> > optimizer_index_caching              integer         0
> > optimizer_index_cost_adj             integer         100
> > optimizer_max_permutations           integer         2000
> > optimizer_mode                       string          CHOOSE
> > db_file_multiblock_read_count        integer         8
> >
> > Obrigado.
> >
> >
> >
> >
> > Atenciosamente,
> > Nelson Cartaxo
> > DBA ORACLE
> > GABD - Ger. Adm. de Banco de Dados
> > DATASUS/RJ (MS)
> > Tel: 3985-7090
> >
> > -----Mensagem original-----
> > De: Marcio Portes [mailto:[EMAIL PROTECTED]
> > Enviada em: terça-feira, 4 de abril de 2006 14:02
> > Para: [email protected]
> > Assunto: Re: RES: [oracle_br] Ajuda com Query Urgente
> >
> >
> > O que voce pode fazer com a query? Voce mudar? Colocar hint?
> > Poderia postar os 2 planos?
> >
> > Acho que existe várias maneiras de resolver o problema, resta saber
> > qual a menos impactante.
> >
> > poste também:
> >
> > show parameter optimizer
> > show parameter db_file_multiblock_read_count
> >
> >
> > --- Em [email protected], Nelson Cartaxo
> > <[EMAIL PROTECTED]> escreveu
> > >
> > > Realmente talvez resolvesse. O Problema que esse banco estava na
> > versão
> > > 8.1.7 e foi migrado recentemente para 9.2.  Esta query funcionava
> > > perfeitamente, inclusive funciona em produção (8.1.7.4). Depois
> que
> > migramos
> > > o plano faz merge join cartesiano e a query fica perdida. Abortei
> > com 5
> > > minutos de execução, se uso o RULE a query executa sem problemas.
> > >
> > > Obrigado.
> > >
> > >
> > > Atenciosamente,
> > > Nelson Cartaxo
> > > DBA ORACLE
> > > -----Mensagem original-----
> > > De: Anderson Haertel Rodrigues [mailto:[EMAIL PROTECTED]
> > > Enviada em: terça-feira, 4 de abril de 2006 13:38
> > > Para: [email protected]
> > > Assunto: Re: [oracle_br] Ajuda com Query Urgente
> > >
> > >
> > >
> > > Nelson,
> > >
> > > Analisando a Query e não os parâmetros do Banco, qual
> > > a  necessidade de se ter um IN comparando ao MAX()?
> > >
> > > Neste caso um dt_inicio = MAX resolve o teu problema.
> > > Certo?
> > >
> > > Anderson Haertel Rodrigues
> > > Administrador de Banco de Dados - DBA
> > > Florianópolis/SC
> > >
> > > --- Nelson Cartaxo <[EMAIL PROTECTED]>
> > > escreveu:
> > >
> > > > Pessoal mais uma vez vou tentar recorrer a voces.
> > > >
> > > > Oracle 9.2.0.7 RedHat 2.1
> > > >
> > > > Seguinte ao rodar a query abaixo com a tabela
> > > > analisada com dbms_stats e
> > > > indices tambem analisados, o plano mostra um merge
> > > > join (cartesian) e a
> > > > query trava, ou seja, fica no limbo. Quando coloco
> > > > um hint de RULE a query
> > > > fica instantanea.   Alguem poderia me dar uma luz
> > > > como faço para resolver.
> > > > De repente to comendo mosca em algum parametro do
> > > > oracle, ou algo parecido.
> > > >
> > > > A query é
> > > >
> > > > SELECT /*+ RULE */st_tarefa
> > > > FROM siops.tb_log_tarefa Text
> > > > WHERE co_tarefa = 10
> > > > AND dt_inicio IN (
> > > > SELECT MAX(dt_inicio)
> > > > FROM siops.tb_log_tarefa TInt
> > > > WHERE tExt.co_tarefa = TInt.co_tarefa)
> > > >
> > > >
> > > >
> > > > Obrigado desde já pelo help.
> > > >
> > > >
> > > >
> > > >
> > > >
> > > > Atenciosamente,
> > > > Nelson Cartaxo
> > > > DBA ORACLE
> > > >
> > > >
> > > > -----Mensagem original-----
> > > > De: Anderson Haertel Rodrigues
> > > > [mailto:[EMAIL PROTECTED]
> > > > Enviada em: terça-feira, 4 de abril de 2006 11:16
> > > > Para: [email protected]
> > > > Assunto: Re: [oracle_br] ENC: Dúvida BLOB
> > > >
> > > >
> > > > Ricardo,
> > > >
> > > > Eu respondi a sua questão no Sábado a noite.
> > > >
> > > >
> > > > --- Ricardo Lyrio <[EMAIL PROTECTED]> escreveu:
> > > >
> > > > > Pessoal,
> > > > >
> > > > >
> > > > >
> > > > > Estou com um impasse que é o seguinte:
> > > > >
> > > > >
> > > > >
> > > > > Tenho a seguinte estrutura:
> > > > >
> > > > >
> > > > >
> > > > > 36 telas de forms sendo que apenas 5 fazem
> > > > > tratamento de imagens
> > > > >
> > > > >
> > > > >
> > > > > Tabela 1
> > > > >
> > > > >    Campo01
> > > > >
> > > > >    Campo02
> > > > >
> > > > >    ...
> > > > >
> > > > >    Campo0n
> > > > >
> > > > >    Imagem01
> > > > >
> > > > >    Imagem02
> > > > >
> > > > >    ...
> > > > >
> > > > >    Imagem12
> > > > >
> > > > >
> > > > >
> > > > > As imagens são todas Blob
> > > > >
> > > > >
> > > > >
> > > > > Esta tabela tem mais ou menos 3.000.000 de
> > > > registros
> > > > >
> > > > >
> > > > >
> > > > > O que seria melhor:
> > > > >
> > > > >
> > > > >
> > > > >    Dividir a tabela, retirar as imagens e criar
> > > > uma
> > > > > outra tabela
> > > > >
> > > > >
> > > > >
> > > > > Tabela 2
> > > > >
> > > > >    FK da tabela1
> > > > >
> > > > >    FK de Descrição da imagem
> > > > >
> > > > >    Imagem
> > > > >
> > > > >
> > > > >
> > > > > Existe alguma limitação para o Oracle tratar em as
> > > > > imagens numa mesma
> > > > > tabela?
> > > > >
> > > > >
> > > > >
> > > > > Grato
> > > > >
> > > > > Ricardo Lyrio
> > > > >
> > > > >
> > > > >
> > > > >
> > > > >
> > > > > [As partes desta mensagem que não continham texto
> > > > > foram removidas]
> > > > >
> > > > >
> > > > >
> > > > >
> > > >
> > > ------------------------------------------------------------------
> --
> > --------
> > > > ----------------------------------------------
> > > > > Atenção! As mensagens deste grupo são de acesso
> > > > > público e de inteira responsabilidade de seus
> > > > > remetentes.
> > > > > Acesse:
> > > > >
> > > >
> > > http://www.mail-archive.com/[email protected]/
> > <http://www.mail-archive.com/[email protected]/>
> > > < http://www.mail-archive.com/[email protected]/
> > <http://www.mail-archive.com/[email protected]/> >
> > > >
> > > < http://www.mail-archive.com/[email protected]/
> > <http://www.mail-archive.com/[email protected]/>
> > > < http://www.mail-archive.com/[email protected]/
> > <http://www.mail-archive.com/[email protected]/> > >
> > > >
> > > > >
> > > > >
> > > >
> > > ------------------------------------------------------------------
> --
> > --------
> > > >
> > > ----------------------------------------------
> > ______________________________
> > > > ____________________________________
> > > > >
> > > > > Este Grupo recebe o apoio da SQL Magazine -
> > > > > www.devmedia.com.br/sqlmagazine
> > > > >
> > > >
> > > __________________________________________________________________
> > > > > O grupo Oracle_br não aceita anexos. Quando
> > > > oferecer
> > > > > algum arquivo, tenha o link do mesmo para evitar
> > > > > trafego(pedidos) desnecessário.
> > > > > Links do Yahoo! Grupos
> > > > >
> > > > >
> > > > >
> > > > >     http://br.yahoo.com/info/utos.html
> > <http://br.yahoo.com/info/utos.html>
> > > < http://br.yahoo.com/info/utos.html
> <http://br.yahoo.com/info/utos.html>
> > >
> > > > < http://br.yahoo.com/info/utos.html
> > <http://br.yahoo.com/info/utos.html>
> > < http://br.yahoo.com/info/utos.html
> <http://br.yahoo.com/info/utos.html> >
> > > >
> > > > >
> > > > >
> > > > >
> > > > >
> > > > >
> > > > >
> > > >
> > > >
> > > >
> > > >
> > > >
> > > >
> > > _______________________________________________________
> > > >
> > > > Abra sua conta no Yahoo! Mail: 1GB de espaço,
> > > > alertas de e-mail no celular e
> > > > anti-spam realmente eficaz.
> > > > http://br.info.mail.yahoo.com/
> <http://br.info.mail.yahoo.com/>  <
> > http://br.info.mail.yahoo.com/ <http://br.info.mail.yahoo.com/> >
> > > > < http://br.info.mail.yahoo.com/
> <http://br.info.mail.yahoo.com/>  <
> > http://br.info.mail.yahoo.com/ <http://br.info.mail.yahoo.com/> >
> > >
> > > >
> > > >
> > > >
> > > ------------------------------------------------------------------
> --
> > --------
> > > > ----------------------------------------------
> > > > Atenção! As mensagens deste grupo são de acesso
> > > > público e de inteira
> > > > responsabilidade de seus remetentes.
> > > > Acesse:
> > > >
> > > http://www.mail-archive.com/[email protected]/
> > <http://www.mail-archive.com/[email protected]/>
> > > < http://www.mail-archive.com/[email protected]/
> > <http://www.mail-archive.com/[email protected]/> >
> > > >
> > > < http://www.mail-archive.com/[email protected]/
> > <http://www.mail-archive.com/[email protected]/>
> > > < http://www.mail-archive.com/[email protected]/
> > <http://www.mail-archive.com/[email protected]/> > >
> > > >
> > > >
> > > === message truncated ===
> > >
> > >
> > >
> > >
> > > _______________________________________________________
> > > Abra sua conta no Yahoo! Mail: 1GB de espaço, alertas de e-mail
> no
> > celular e
> > > anti-spam realmente eficaz.
> > > http://br.info.mail.yahoo.com/ <http://br.info.mail.yahoo.com/>  <
> > http://br.info.mail.yahoo.com/ <http://br.info.mail.yahoo.com/> >
> > >
> > >
> > > ------------------------------------------------------------------
> --
> > --------
> > > ----------------------------------------------
> > > Atenção! As mensagens deste grupo são de acesso público e de
> inteira
> > > responsabilidade de seus remetentes.
> > > Acesse: http://www.mail-archive.com/[email protected]/
> > <http://www.mail-archive.com/[email protected]/>
> > > < http://www.mail-archive.com/[email protected]/
> > <http://www.mail-archive.com/[email protected]/> >
> > > ------------------------------------------------------------------
> --
> > --------
> > > ----------------------------------------------
> > ______________________________
> > > ____________________________________
> > >
> > > Este Grupo recebe o apoio da SQL Magazine -
> > www.devmedia.com.br/sqlmagazine
> > > __________________________________________________________________
> > > O grupo Oracle_br não aceita anexos. Quando oferecer algum
> arquivo,
> > tenha o
> > > link do mesmo para evitar trafego(pedidos) desnecessário.
> > >
> > >
> > >
> > >   _____
> > >
> > > Links do Yahoo! Grupos
> > >
> > >
> > > *      Para visitar o site do seu grupo na web, acesse:
> > > http://br.groups.yahoo.com/group/oracle_br/
> > <http://br.groups.yahoo.com/group/oracle_br/>
> > > < http://br.groups.yahoo.com/group/oracle_br/
> > <http://br.groups.yahoo.com/group/oracle_br/> >
> > >
> > >
> > > *      Para sair deste grupo, envie um e-mail para:
> > > [EMAIL PROTECTED]
> > > <mailto:[EMAIL PROTECTED]
> > subject=Unsubscribe>
> > >
> > >
> > > *      O uso que você faz do Yahoo! Grupos está sujeito aos
> Termos do
> > > Serviço do Yahoo! < http://br.yahoo.com/info/utos.html
> > <http://br.yahoo.com/info/utos.html> > .
> > >
> > >
> > >
> > >
> > > [As partes desta mensagem que não continham texto foram removidas]
> > >
> >
> >
> >
> >
> >
> >
> > --------------------------------------------------------------------
> --------
> > ----------------------------------------------
> > Atenção! As mensagens deste grupo são de acesso público e de inteira
> > responsabilidade de seus remetentes.
> > Acesse: http://www.mail-archive.com/[email protected]/
> > <http://www.mail-archive.com/[email protected]/>
> > --------------------------------------------------------------------
> --------
> > ----------------------------------------------
> ______________________________
> > ____________________________________
> >
> > Este Grupo recebe o apoio da SQL Magazine -
> www.devmedia.com.br/sqlmagazine
> > __________________________________________________________________
> > O grupo Oracle_br não aceita anexos. Quando oferecer algum arquivo,
> tenha o
> > link do mesmo para evitar trafego(pedidos) desnecessário.
> >
> >
> >
> >   _____
> >
> > Links do Yahoo! Grupos
> >
> >
> > *      Para visitar o site do seu grupo na web, acesse:
> > http://br.groups.yahoo.com/group/oracle_br/
> > <http://br.groups.yahoo.com/group/oracle_br/>
> >
> >
> > *      Para sair deste grupo, envie um e-mail para:
> > [EMAIL PROTECTED]
> > <mailto:[EMAIL PROTECTED]
> subject=Unsubscribe>
> >
> >
> > *      O uso que você faz do Yahoo! Grupos está sujeito aos Termos do
> > Serviço do Yahoo! <http://br.yahoo.com/info/utos.html> .
> >
> >
> >
> >
> > [As partes desta mensagem que não continham texto foram removidas]
> >
>
>
>
>
>
>
>
> ----------------------------------------------------------------------------
> ----------------------------------------------
> Atenção! As mensagens deste grupo são de acesso público e de inteira
> responsabilidade de seus remetentes.
> Acesse: http://www.mail-archive.com/[email protected]/
>
> ----------------------------------------------------------------------------
>
> ----------------------------------------------______________________________
> ____________________________________
>
> Este Grupo recebe o apoio da SQL Magazine -
> www.devmedia.com.br/sqlmagazine
> __________________________________________________________________
> O grupo Oracle_br não aceita anexos. Quando oferecer algum arquivo, tenha
> o
> link do mesmo para evitar trafego(pedidos) desnecessário.
>
>
> Yahoo! Grupos, um serviço oferecido por:
> PUBLICIDADE
>
>
>
>
>
> Links do Yahoo! Grupos
>
> Para visitar o site do seu grupo na web, acesse:
> http://br.groups.yahoo.com/group/oracle_br/
>
> Para sair deste grupo, envie um e-mail para:
> [EMAIL PROTECTED]
>
> O uso que você faz do Yahoo! Grupos está sujeito aos Termos do Serviço do
> Yahoo!.
>
>
>
> --------------------------------------------------------------------------------------------------------------------------
> Atenção! As mensagens deste grupo são de acesso público e de inteira
> responsabilidade de seus remetentes.
> Acesse: http://www.mail-archive.com/[email protected]/
>
> --------------------------------------------------------------------------------------------------------------------------__________________________________________________________________
>
> Este Grupo recebe o apoio da SQL Magazine -
> www.devmedia.com.br/sqlmagazine
> __________________________________________________________________
> O grupo Oracle_br não aceita anexos. Quando oferecer algum arquivo, tenha
> o link do mesmo para evitar trafego(pedidos) desnecessário.
> Links do Yahoo! Grupos
>
>
>
>
>
>
>
>


--
Marcio Portes
Material Tecnico em Portugues - http://mportes.blogspot.com
Practical Learning Oracle     -
http://mportes.blogspot.com/2006/02/practical-learning-oracle.html


[As partes desta mensagem que não continham texto foram removidas]



--------------------------------------------------------------------------------------------------------------------------
Atenção! As mensagens deste grupo são de acesso público e de inteira 
responsabilidade de seus remetentes.
Acesse: http://www.mail-archive.com/[email protected]/ 
--------------------------------------------------------------------------------------------------------------------------__________________________________________________________________

Este Grupo recebe o apoio da SQL Magazine - www.devmedia.com.br/sqlmagazine 
__________________________________________________________________
O grupo Oracle_br não aceita anexos. Quando oferecer algum arquivo, tenha o 
link do mesmo para evitar trafego(pedidos) desnecessário. 
Links do Yahoo! Grupos

<*> Para visitar o site do seu grupo na web, acesse:
    http://br.groups.yahoo.com/group/oracle_br/

<*> Para sair deste grupo, envie um e-mail para:
    [EMAIL PROTECTED]

<*> O uso que você faz do Yahoo! Grupos está sujeito aos:
    http://br.yahoo.com/info/utos.html

 


Responder a