[oracle_br] Uso do indice

2005-11-11 Por tôpico Elis Azevedo Nery
Olá!
 
Tenho este select simples com join de duas tabelas:
 

select e.id_executor, c.localidade
from cod_postal c
,executor e
where c.id_cod_postal = e.codigo_postal

 
Se eu coloco no select colunas da tabela cod_postal, não utiliza o indice 
existente nesta tabela e acaba por fazer full. Alguém tem uma explicação lógica 
para isto?
Já analisei as tabelas e os indices.
 
Obrigada
Elis Nery


-
 Yahoo! Acesso Grátis: Internet rápida e grátis.
Instale o discador agora!

[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/oracle_br@yahoogrupos.com.br/ 
--_
Area de download do grupo - http://www.4shared.com/dir/101727/a4dcc423  
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

 




RES: [oracle_br] Uso do indice

2005-11-11 Por tôpico Alex Fernando Kirsten \(CESUP\)
   Oi

   Existe uma explicação lógica sim. Uma de suas tabelas deve ser muito
pequena e o Oracle não esta utilizando índice pq a quantidade de registros
recuperados é alta em relação a quantidade de registros da tabela. Vc pode
forçar a utilização do índice com o uso de um hint na sua consulta, mas
provavelmente não iria adiantar muito.

   Outro motivo possível é que seu índice está desabilitado.

   []’s

 

Alex Fernando Kirsten

Oracle 9i Database Administrator Certified Professional

Cetil Sistemas

Email: [EMAIL PROTECTED]

 

  _  

De: oracle_br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] Em
nome de Elis Azevedo Nery
Enviada em: sexta-feira, 11 de novembro de 2005 07:29
Para: oracle_br@yahoogrupos.com.br
Assunto: [oracle_br] Uso do indice

 

Olá!

Tenho este select simples com join de duas tabelas:


select e.id_executor, c.localidade
from cod_postal c
,executor e
where c.id_cod_postal = e.codigo_postal


Se eu coloco no select colunas da tabela cod_postal, não utiliza o indice
existente nesta tabela e acaba por fazer full. Alguém tem uma explicação
lógica para isto?
Já analisei as tabelas e os indices.

Obrigada
Elis Nery


-
Yahoo! Acesso Grátis: Internet rápida e grátis.
Instale o discador agora!

[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/oracle_br@yahoogrupos.com.br/ 

--__
___
Area de download do grupo - http://www.4shared.com/dir/101727/a4dcc423 





Yahoo! Grupos, um serviço oferecido por:



PUBLICIDADE
 
http://br.rd.yahoo.com/SIG=12fo9e189/M=380335.7481167.8369105.2369893/D=brc
lubs/S=2137114689:HM/Y=BR/EXP=1131712298/A=3107499/R=2/id=noscript/SIG=12c39
trgo/*http:/ad.br.doubleclick.net/clk;22846485;12120066;a?http://www.hoteis.
com 

  http://br.i1.yimg.com/br.yimg.com/i/br/ads6/1107_lrec_hotelscom.gif 

 

  _  

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]
mailto:[EMAIL PROTECTED] 
  
*   O uso que você faz do Yahoo! Grupos está sujeito aos Termos do
Serviço do http://br.yahoo.com/info/utos.html  Yahoo!. 



[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/oracle_br@yahoogrupos.com.br/ 
--_
Area de download do grupo - http://www.4shared.com/dir/101727/a4dcc423  
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

 




Re: RES: [oracle_br] Uso do indice

2005-11-11 Por tôpico Elis Azevedo Nery
Oi Alex!
 
Ainda estou confusa! Quando eu retorno no select somente colunas da tabela 
executor, o indice da tabela codigo postal é utilizado. Tudo bem que a tabela 
executor é pequena e nesta ele faz full mesmo, mas a de código postal é gigante 
e o custo vai lá no céu!
 
Assim usa o indice da codigo_postal:
select e.id_executor
from cod_postal c
,executor e
where c.id_cod_postal = e.codigo_postal

 

mas assim não:

select e.id_executor, c.localidade
from cod_postal c
,executor e
where c.id_cod_postal = e.codigo_postal

Obrigada pela resposta
Elis

Alex Fernando Kirsten (CESUP) [EMAIL PROTECTED] escreveu:
   Oi

   Existe uma explicação lógica sim. Uma de suas tabelas deve ser muito
pequena e o Oracle não esta utilizando índice pq a quantidade de registros
recuperados é alta em relação a quantidade de registros da tabela. Vc pode
forçar a utilização do índice com o uso de um hint na sua consulta, mas
provavelmente não iria adiantar muito.

   Outro motivo possível é que seu índice está desabilitado.

   []’s



Alex Fernando Kirsten

Oracle 9i Database Administrator Certified Professional

Cetil Sistemas

Email: [EMAIL PROTECTED]



  _  

De: oracle_br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] Em
nome de Elis Azevedo Nery
Enviada em: sexta-feira, 11 de novembro de 2005 07:29
Para: oracle_br@yahoogrupos.com.br
Assunto: [oracle_br] Uso do indice



Olá!

Tenho este select simples com join de duas tabelas:


select e.id_executor, c.localidade
from cod_postal c
,executor e
where c.id_cod_postal = e.codigo_postal


Se eu coloco no select colunas da tabela cod_postal, não utiliza o indice
existente nesta tabela e acaba por fazer full. Alguém tem uma explicação
lógica para isto?
Já analisei as tabelas e os indices.

Obrigada
Elis Nery


-
Yahoo! Acesso Grátis: Internet rápida e grátis.
Instale o discador agora!

[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/oracle_br@yahoogrupos.com.br/ 

--__
___
Area de download do grupo - http://www.4shared.com/dir/101727/a4dcc423 





Yahoo! Grupos, um serviço oferecido por:



PUBLICIDADE

http://br.rd.yahoo.com/SIG=12fo9e189/M=380335.7481167.8369105.2369893/D=brc
lubs/S=2137114689:HM/Y=BR/EXP=1131712298/A=3107499/R=2/id=noscript/SIG=12c39
trgo/*http:/ad.br.doubleclick.net/clk;22846485;12120066;a?http://www.hoteis.
com 

  http://br.i1.yimg.com/br.yimg.com/i/br/ads6/1107_lrec_hotelscom.gif 



  _  

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]
mailto:[EMAIL PROTECTED] 
  
*  O uso que você faz do Yahoo! Grupos está sujeito aos Termos do
Serviço do http://br.yahoo.com/info/utos.html  Yahoo!. 



[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/oracle_br@yahoogrupos.com.br/ 
--_
Area de download do grupo - http://www.4shared.com/dir/101727/a4dcc423 


Yahoo! Grupos, um serviço oferecido por:PUBLICIDADE
var lrec_target=_blank;var lrec_URL=new 
Array();lrec_URL[1]=http://br.rd.yahoo.com/SIG=12fek55a1/M=380335.7481167.8369105.2369893/D=brclubs/S=2137114689:HM/Y=BR/EXP=1131712606/A=3107499/R=0/id=flashurl/SIG=12c39trgo/*http://ad.br.doubleclick.net/clk;22846485;12120066;a?http://www.hoteis.com;var
 
lrec_flashfile=http://br.i1.yimg.com/br.yimg.com/i/br/ads6/1107_lrec_hotelscom.swf?clickTAG=javascript:LRECopenWindow(1);var
 
lrec_altURL=http://br.rd.yahoo.com/SIG=12fek55a1/M=380335.7481167.8369105.2369893/D=brclubs/S=2137114689:HM/Y=BR/EXP=1131712606/A=3107499/R=1/id=altimg/SIG=12c39trgo/*http://ad.br.doubleclick.net/clk;22846485;12120066;a?http://www.hoteis.com;var
 
lrec_altimg=http://br.i1.yimg.com/br.yimg.com/i/br/ads6/1107_lrec_hotelscom.gif;var
 lrec_width=300;var lrec_height=250;

-
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

Re: RES: [oracle_br] Uso do indice

2005-11-11 Por tôpico Renan Medeiros
Pq vc nao coloca os planos de execução de cada comando aqui no email ?
Ficará mais fácil de se analisar/entender a situação.




 Oi Alex!

  Ainda estou confusa! Quando eu retorno no select somente colunas da
 tabela executor, o indice da tabela codigo postal é utilizado. Tudo bem
 que a tabela executor é pequena e nesta ele faz full mesmo, mas a de
 código postal é gigante e o custo vai lá no céu!

  Assim usa o indice da codigo_postal:
  select e.id_executor
  from cod_postal c
  ,executor e
  where c.id_cod_postal = e.codigo_postal



  mas assim não:

  select e.id_executor, c.localidade
  from cod_postal c
  ,executor e
  where c.id_cod_postal = e.codigo_postal

  Obrigada pela resposta
  Elis

  quot;Alex Fernando Kirsten (CESUP)quot;  escreveu:
 Oi

 Existe uma explicação lógica sim. Uma de suas tabelas deve ser muito
  pequena e o Oracle não esta utilizando índice pq a quantidade de
 registros
  recuperados é alta em relação a quantidade de registros da tabela. Vc
 pode
  forçar a utilização do índice com o uso de um hint na sua consulta, mas
  provavelmente não iria adiantar muito.

 Outro motivo possível é que seu índice está desabilitado.

 []’s



  Alex Fernando Kirsten

  Oracle 9i Database Administrator Certified Professional

  Cetil Sistemas

  Email: [EMAIL PROTECTED]



_

  De: oracle_br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] Em
  nome de Elis Azevedo Nery
  Enviada em: sexta-feira, 11 de novembro de 2005 07:29
  Para: oracle_br@yahoogrupos.com.br
  Assunto: [oracle_br] Uso do indice



  Olá!

  Tenho este select simples com join de duas tabelas:


  select e.id_executor, c.localidade
  from cod_postal c
  ,executor e
  where c.id_cod_postal = e.codigo_postal


  Se eu coloco no select colunas da tabela cod_postal, não utiliza o indice
  existente nesta tabela e acaba por fazer full. Alguém tem uma explicação
  lógica para isto?
  Já analisei as tabelas e os indices.

  Obrigada
  Elis Nery


  -
  Yahoo! Acesso Grátis: Internet rápida e grátis.
  Instale o discador agora!

  [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/oracle_br@yahoogrupos.com.br/
  
  --__
  ___
  Area de download do grupo - http://www.4shared.com/dir/101727/a4dcc423





  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!.



  [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/oracle_br@yahoogrupos.com.br/
  
 --_
  Area de download do grupo - http://www.4shared.com/dir/101727/a4dcc423


  Yahoo! Grupos, um serviço oferecido por:PUBLICIDADE
  var lrec_target=quot;_blankquot;;var lrec_URL=new
 Array();lrec_URL[1]=quot;http://br.rd.yahoo.com/SIG=12fek55a1/M=380335.7481167.8369105.2369893/D=brclubs/S=2137114689:HM/Y=BR/EXP=1131712606/A=3107499/R=0/id=flashurl/SIG=12c39trgo/*http://ad.br.doubleclick.net/clk;22846485;12120066;a?http://www.hoteis.comquot;;var
 lrec_flashfile=quot;http://br.i1.yimg.com/br.yimg.com/i/br/ads6/1107_lrec_hotelscom.swf?clickTAG=javascript:LRECopenWindow(1)quot;;var
 lrec_altURL=quot;http://br.rd.yahoo.com/SIG=12fek55a1/M=380335.7481167.8369105.2369893/D=brclubs/S=2137114689:HM/Y=BR/EXP=1131712606/A=3107499/R=1/id=altimg/SIG=12c39trgo/*http://ad.br.doubleclick.net/clk;22846485;12120066;a?http://www.hoteis.comquot;;var
 lrec_altimg=quot;http://br.i1.yimg.com/br.yimg.com/i/br/ads6/1107_lrec_hotelscom.gifquot;;var
 lrec_width=300;var lrec_height=250;

  -
  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

Re: RES: [oracle_br] Uso do indice

2005-11-11 Por tôpico Elis Azevedo Nery
Aí está os planos de execução.
 
select e.id_executor
from cod_postal c
  ,executor e
  where c.id_cod_postal = e.codigo_postal 
Query Plan

SELECT STATEMENT[CHOOSE] Cost=97 Rows=2291 Bytes=27492
  NESTED LOOPS
TABLE ACCESS FULL EXECUTOR  [ANALYZED]
INDEX UNIQUE SCAN COD_POSTAL_PK  [ANALYZED]
 
 
select e.id_executor, c.localidade
  from cod_postal c
  ,executor e
  where c.id_cod_postal = e.codigo_postal 
Query Plan

SELECT STATEMENT[CHOOSE] Cost=235 Rows=2291 Bytes=54984
  HASH JOIN
TABLE ACCESS FULL EXECUTOR  [ANALYZED]
TABLE ACCESS FULL COD_POSTAL  [ANALYZED]

Renan Medeiros [EMAIL PROTECTED] escreveu:Pq vc nao coloca os planos de 
execução de cada comando aqui no email ?
Ficará mais fácil de se analisar/entender a situação.




 Oi Alex!

  Ainda estou confusa! Quando eu retorno no select somente colunas da
 tabela executor, o indice da tabela codigo postal é utilizado. Tudo bem
 que a tabela executor é pequena e nesta ele faz full mesmo, mas a de
 código postal é gigante e o custo vai lá no céu!

  Assim usa o indice da codigo_postal:
  select e.id_executor
  from cod_postal c
  ,executor e
  where c.id_cod_postal = e.codigo_postal



  mas assim não:

  select e.id_executor, c.localidade
  from cod_postal c
  ,executor e
  where c.id_cod_postal = e.codigo_postal

  Obrigada pela resposta
  Elis

  quot;Alex Fernando Kirsten (CESUP)quot;  escreveu:
 Oi

 Existe uma explicação lógica sim. Uma de suas tabelas deve ser muito
  pequena e o Oracle não esta utilizando índice pq a quantidade de
 registros
  recuperados é alta em relação a quantidade de registros da tabela. Vc
 pode
  forçar a utilização do índice com o uso de um hint na sua consulta, mas
  provavelmente não iria adiantar muito.

 Outro motivo possível é que seu índice está desabilitado.

 []’s



  Alex Fernando Kirsten

  Oracle 9i Database Administrator Certified Professional

  Cetil Sistemas

  Email: [EMAIL PROTECTED]



_

  De: oracle_br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] Em
  nome de Elis Azevedo Nery
  Enviada em: sexta-feira, 11 de novembro de 2005 07:29
  Para: oracle_br@yahoogrupos.com.br
  Assunto: [oracle_br] Uso do indice



  Olá!

  Tenho este select simples com join de duas tabelas:


  select e.id_executor, c.localidade
  from cod_postal c
  ,executor e
  where c.id_cod_postal = e.codigo_postal


  Se eu coloco no select colunas da tabela cod_postal, não utiliza o indice
  existente nesta tabela e acaba por fazer full. Alguém tem uma explicação
  lógica para isto?
  Já analisei as tabelas e os indices.

  Obrigada
  Elis Nery


  -
  Yahoo! Acesso Grátis: Internet rápida e grátis.
  Instale o discador agora!

  [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/oracle_br@yahoogrupos.com.br/
  
  --__
  ___
  Area de download do grupo - http://www.4shared.com/dir/101727/a4dcc423





  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!.



  [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/oracle_br@yahoogrupos.com.br/
  
 --_
  Area de download do grupo - http://www.4shared.com/dir/101727/a4dcc423


  Yahoo! Grupos, um serviço oferecido por:PUBLICIDADE
  var lrec_target=quot;_blankquot;;var lrec_URL=new
 Array();lrec_URL[1]=quot;http://br.rd.yahoo.com/SIG=12fek55a1/M=380335.7481167.8369105.2369893/D=brclubs/S=2137114689:HM/Y=BR/EXP=1131712606/A=3107499/R=0/id=flashurl/SIG=12c39trgo/*http://ad.br.doubleclick.net/clk;22846485;12120066;a?http://www.hoteis.comquot;;var
 lrec_flashfile=quot

RES: RES: [oracle_br] Uso do indice

2005-11-11 Por tôpico Salvio Padlipskas
Olá Elis,

Vamos tentar ajudar. O que ocorre é que na 1a. consulta 
a coluna deve fazer parte de um dos indices( então a procura
é apenas no indice), porém na 2a. 
consulta não, o que faz com o o otimizador tenha que
pesquisar nos blocos da tabela.


Seria isso o que vc tem por ai ??

[ ]'s
Salvio



-Mensagem original-
De: Elis Azevedo Nery [mailto:[EMAIL PROTECTED]
Enviada em: sexta-feira, 11 de novembro de 2005 10:18
Para: oracle_br@yahoogrupos.com.br
Assunto: Re: RES: [oracle_br] Uso do indice


Aí está os planos de execução.
 
select e.id_executor
from cod_postal c
  ,executor e
  where c.id_cod_postal = e.codigo_postal 
Query Plan


SELECT STATEMENT[CHOOSE] Cost=97 Rows=2291 Bytes=27492
  NESTED LOOPS
TABLE ACCESS FULL EXECUTOR  [ANALYZED]
INDEX UNIQUE SCAN COD_POSTAL_PK  [ANALYZED]
 
 
select e.id_executor, c.localidade
  from cod_postal c
  ,executor e
  where c.id_cod_postal = e.codigo_postal 
Query Plan


SELECT STATEMENT[CHOOSE] Cost=235 Rows=2291 Bytes=54984
  HASH JOIN
TABLE ACCESS FULL EXECUTOR  [ANALYZED]
TABLE ACCESS FULL COD_POSTAL  [ANALYZED]

Renan Medeiros [EMAIL PROTECTED] escreveu:Pq vc nao coloca os
planos de execução de cada comando aqui no email ?
Ficará mais fácil de se analisar/entender a situação.




 Oi Alex!

  Ainda estou confusa! Quando eu retorno no select somente colunas da
 tabela executor, o indice da tabela codigo postal é utilizado. Tudo bem
 que a tabela executor é pequena e nesta ele faz full mesmo, mas a de
 código postal é gigante e o custo vai lá no céu!

  Assim usa o indice da codigo_postal:
  select e.id_executor
  from cod_postal c
  ,executor e
  where c.id_cod_postal = e.codigo_postal



  mas assim não:

  select e.id_executor, c.localidade
  from cod_postal c
  ,executor e
  where c.id_cod_postal = e.codigo_postal

  Obrigada pela resposta
  Elis

  quot;Alex Fernando Kirsten (CESUP)quot;  escreveu:
 Oi

 Existe uma explicação lógica sim. Uma de suas tabelas deve ser muito
  pequena e o Oracle não esta utilizando índice pq a quantidade de
 registros
  recuperados é alta em relação a quantidade de registros da tabela. Vc
 pode
  forçar a utilização do índice com o uso de um hint na sua consulta, mas
  provavelmente não iria adiantar muito.

 Outro motivo possível é que seu índice está desabilitado.

 []'s



  Alex Fernando Kirsten

  Oracle 9i Database Administrator Certified Professional

  Cetil Sistemas

  Email: [EMAIL PROTECTED]



_

  De: oracle_br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] Em
  nome de Elis Azevedo Nery
  Enviada em: sexta-feira, 11 de novembro de 2005 07:29
  Para: oracle_br@yahoogrupos.com.br
  Assunto: [oracle_br] Uso do indice



  Olá!

  Tenho este select simples com join de duas tabelas:


  select e.id_executor, c.localidade
  from cod_postal c
  ,executor e
  where c.id_cod_postal = e.codigo_postal


  Se eu coloco no select colunas da tabela cod_postal, não utiliza o indice
  existente nesta tabela e acaba por fazer full. Alguém tem uma explicação
  lógica para isto?
  Já analisei as tabelas e os indices.

  Obrigada
  Elis Nery


  -
  Yahoo! Acesso Grátis: Internet rápida e grátis.
  Instale o discador agora!

  [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/oracle_br@yahoogrupos.com.br/



--__
  ___
  Area de download do grupo - http://www.4shared.com/dir/101727/a4dcc423





  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!.



  [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/oracle_br@yahoogrupos.com.br

Re: RES: RES: [oracle_br] Uso do indice

2005-11-11 Por tôpico Elis Azevedo Nery
Olá Salvio!
 
Obrigada pela tentativa, mas não deu certo, mas talvez seja este o caminho.
Quando eu coloco no select qualquer coluna que não seja a coluna do indice da 
tabela cod_postal, não usa o indice. Veja os planos:
 
select e.id_executor, c.id_cod_postal
  from cod_postal c
   ,executor e
 where c.id_cod_postal = e.codigo_postal
Query Plan

SELECT STATEMENT[CHOOSE] Cost=97 Rows=2291 Bytes=27492
  NESTED LOOPS
TABLE ACCESS FULL EXECUTOR  [ANALYZED]
INDEX UNIQUE SCAN COD_POSTAL_PK  [ANALYZED]
 
select e.id_executor, c.id_cod_postal, c.localidade
  from cod_postal c
,executor e
 where c.id_cod_postal = e.codigo_postal
Query Plan

SELECT STATEMENT[CHOOSE] Cost=235 Rows=2291 Bytes=54984
  HASH JOIN
TABLE ACCESS FULL EXECUTOR  [ANALYZED]
TABLE ACCESS FULL COD_POSTAL  [ANALYZED]

Salvio Padlipskas [EMAIL PROTECTED] escreveu:
Olá Elis,

Vamos tentar ajudar. O que ocorre é que na 1a. consulta 
a coluna deve fazer parte de um dos indices( então a procura
é apenas no indice), porém na 2a. 
consulta não, o que faz com o o otimizador tenha que
pesquisar nos blocos da tabela.


Seria isso o que vc tem por ai ??

[ ]'s
Salvio



-Mensagem original-
De: Elis Azevedo Nery [mailto:[EMAIL PROTECTED]
Enviada em: sexta-feira, 11 de novembro de 2005 10:18
Para: oracle_br@yahoogrupos.com.br
Assunto: Re: RES: [oracle_br] Uso do indice


Aí está os planos de execução.

select e.id_executor
from cod_postal c
  ,executor e
  where c.id_cod_postal = e.codigo_postal 
Query Plan


SELECT STATEMENT[CHOOSE] Cost=97 Rows=2291 Bytes=27492
  NESTED LOOPS
TABLE ACCESS FULL EXECUTOR  [ANALYZED]
INDEX UNIQUE SCAN COD_POSTAL_PK  [ANALYZED]


select e.id_executor, c.localidade
  from cod_postal c
  ,executor e
  where c.id_cod_postal = e.codigo_postal 
Query Plan


SELECT STATEMENT[CHOOSE] Cost=235 Rows=2291 Bytes=54984
  HASH JOIN
TABLE ACCESS FULL EXECUTOR  [ANALYZED]
TABLE ACCESS FULL COD_POSTAL  [ANALYZED]

Renan Medeiros [EMAIL PROTECTED] escreveu:Pq vc nao coloca os
planos de execução de cada comando aqui no email ?
Ficará mais fácil de se analisar/entender a situação.




 Oi Alex!

  Ainda estou confusa! Quando eu retorno no select somente colunas da
 tabela executor, o indice da tabela codigo postal é utilizado. Tudo bem
 que a tabela executor é pequena e nesta ele faz full mesmo, mas a de
 código postal é gigante e o custo vai lá no céu!

  Assim usa o indice da codigo_postal:
  select e.id_executor
  from cod_postal c
  ,executor e
  where c.id_cod_postal = e.codigo_postal



  mas assim não:

  select e.id_executor, c.localidade
  from cod_postal c
  ,executor e
  where c.id_cod_postal = e.codigo_postal

  Obrigada pela resposta
  Elis

  quot;Alex Fernando Kirsten (CESUP)quot;  escreveu:
 Oi

 Existe uma explicação lógica sim. Uma de suas tabelas deve ser muito
  pequena e o Oracle não esta utilizando índice pq a quantidade de
 registros
  recuperados é alta em relação a quantidade de registros da tabela. Vc
 pode
  forçar a utilização do índice com o uso de um hint na sua consulta, mas
  provavelmente não iria adiantar muito.

 Outro motivo possível é que seu índice está desabilitado.

 []'s



  Alex Fernando Kirsten

  Oracle 9i Database Administrator Certified Professional

  Cetil Sistemas

  Email: [EMAIL PROTECTED]



_

  De: oracle_br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] Em
  nome de Elis Azevedo Nery
  Enviada em: sexta-feira, 11 de novembro de 2005 07:29
  Para: oracle_br@yahoogrupos.com.br
  Assunto: [oracle_br] Uso do indice



  Olá!

  Tenho este select simples com join de duas tabelas:


  select e.id_executor, c.localidade
  from cod_postal c
  ,executor e
  where c.id_cod_postal = e.codigo_postal


  Se eu coloco no select colunas da tabela cod_postal, não utiliza o indice
  existente nesta tabela e acaba por fazer full. Alguém tem uma explicação
  lógica para isto?
  Já analisei as tabelas e os indices.

  Obrigada
  Elis Nery


  -
  Yahoo! Acesso Grátis: Internet rápida e grátis.
  Instale o discador agora!

  [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/oracle_br@yahoogrupos.com.br

Re: RES: RES: [oracle_br] Uso do indice

2005-11-11 Por tôpico jlchiappa
Colega, PMFJI, mas isso é ** insuficiente ** pra dizer qquer coisa 
que não seja palpite puro : como já dito N vezes aqui na lista (agora 
serão N+1 vezes), quando vc coleta estatísticas vc está usando 
otimização por Custo (o CBO), e pra se usar eficientemente o CBO, 
além de coletar estatísticas, vc tem que ** configurar ** 
corretamente os parâmetros do CBO, em especial o 
optimizer_index_cost_adj e o optimizer_index_caching, pois sem isso p 
CBO vai pensar que bloco acessado por table scan é o mesmo custo 
que acesso por índice, E que a chance de encontrar blocos de índices 
no cache é ZERO, ambas as coisas  ** NÂO ** verdadeiras em sistemas 
pequenos/OLTP, como parece ser o seu caso (o que vc não diz, mas se 
deduz pela cardinalidade das tabelas).  A regra é clara, usar CBO ** 
sem ** ajustar os parâmetros adequados é meio caminho andado pra maus 
resultados, já que o default é inapropriado na maioria dos casos.

== Então a recomendação número 1 é essa, vc (ou o DBA, mais 
provavelmente) pode ter como referência o clássico paper The Search 
for Intelligent Life in the Cost-Based Optimizer, de Tim Gorman, é 
um pouco antigo mas ainda muito válido.

[]s

 Chiappa
 
--- Em oracle_br@yahoogrupos.com.br, Elis Azevedo Nery 
[EMAIL PROTECTED] escreveu
 Olá Salvio!
  
 Obrigada pela tentativa, mas não deu certo, mas talvez seja este o 
caminho.
 Quando eu coloco no select qualquer coluna que não seja a coluna do 
indice da tabela cod_postal, não usa o indice. Veja os planos:
  
 select e.id_executor, c.id_cod_postal
   from cod_postal c
,executor e
  where c.id_cod_postal = e.codigo_postal
 Query Plan
 

 SELECT STATEMENT[CHOOSE] Cost=97 Rows=2291 Bytes=27492
   NESTED LOOPS
 TABLE ACCESS FULL EXECUTOR  [ANALYZED]
 INDEX UNIQUE SCAN COD_POSTAL_PK  [ANALYZED]
  
 select e.id_executor, c.id_cod_postal, c.localidade
   from cod_postal c
 ,executor e
  where c.id_cod_postal = e.codigo_postal
 Query Plan
 

 SELECT STATEMENT[CHOOSE] Cost=235 Rows=2291 Bytes=54984
   HASH JOIN
 TABLE ACCESS FULL EXECUTOR  [ANALYZED]
 TABLE ACCESS FULL COD_POSTAL  [ANALYZED]
 
 Salvio Padlipskas [EMAIL PROTECTED] escreveu:
 Olá Elis,
 
 Vamos tentar ajudar. O que ocorre é que na 1a. consulta 
 a coluna deve fazer parte de um dos indices( então a procura
 é apenas no indice), porém na 2a. 
 consulta não, o que faz com o o otimizador tenha que
 pesquisar nos blocos da tabela.
 
 
 Seria isso o que vc tem por ai ??
 
 [ ]'s
 Salvio
 
 
 
 -Mensagem original-
 De: Elis Azevedo Nery [mailto:[EMAIL PROTECTED]
 Enviada em: sexta-feira, 11 de novembro de 2005 10:18
 Para: oracle_br@yahoogrupos.com.br
 Assunto: Re: RES: [oracle_br] Uso do indice
 
 
 Aí está os planos de execução.
 
 select e.id_executor
 from cod_postal c
   ,executor e
   where c.id_cod_postal = e.codigo_postal 
 Query Plan
 

 
 SELECT STATEMENT[CHOOSE] Cost=97 Rows=2291 Bytes=27492
   NESTED LOOPS
 TABLE ACCESS FULL EXECUTOR  [ANALYZED]
 INDEX UNIQUE SCAN COD_POSTAL_PK  [ANALYZED]
 
 
 select e.id_executor, c.localidade
   from cod_postal c
   ,executor e
   where c.id_cod_postal = e.codigo_postal 
 Query Plan
 

 
 SELECT STATEMENT[CHOOSE] Cost=235 Rows=2291 Bytes=54984
   HASH JOIN
 TABLE ACCESS FULL EXECUTOR  [ANALYZED]
 TABLE ACCESS FULL COD_POSTAL  [ANALYZED]
 
 Renan Medeiros [EMAIL PROTECTED] escreveu:Pq vc nao coloca os
 planos de execução de cada comando aqui no email ?
 Ficará mais fácil de se analisar/entender a situação.
 
 
 
 
  Oi Alex!
 
   Ainda estou confusa! Quando eu retorno no select somente colunas 
da
  tabela executor, o indice da tabela codigo postal é utilizado. 
Tudo bem
  que a tabela executor é pequena e nesta ele faz full mesmo, mas a 
de
  código postal é gigante e o custo vai lá no céu!
 
   Assim usa o indice da codigo_postal:
   select e.id_executor
   from cod_postal c
   ,executor e
   where c.id_cod_postal = e.codigo_postal
 
 
 
   mas assim não:
 
   select e.id_executor, c.localidade
   from cod_postal c
   ,executor e
   where c.id_cod_postal = e.codigo_postal
 
   Obrigada pela resposta
   Elis
 
   quot;Alex Fernando Kirsten (CESUP)quot;  escreveu:
  Oi
 
  Existe uma explicação lógica sim. Uma de suas tabelas deve 
ser muito
   pequena e o Oracle não esta utilizando índice pq a quantidade de
  registros
   recuperados é alta em relação a quantidade de registros da 
tabela. Vc
  pode
   forçar a utilização do índice com o uso de um hint na sua 
consulta, mas
   provavelmente não iria adiantar muito.
 
  Outro motivo possível é que seu índice está desabilitado.
 
  []'s
 
 
 
   Alex Fernando Kirsten

Re: RES: [oracle_br] Uso do indice

2005-11-11 Por tôpico Renan Medeiros
No primeiro plano, vc acessa via indice porque a unica coluna recuperada é
da tabela executor.
No segundo , é acesso full para recuperar as duas colunas.
Lembre-se que não existe restrição para a c.id_cod_postal.



 Aí está os planos de execução.

  select e.id_executor
  from cod_postal c
,executor e
where c.id_cod_postal = e.codigo_postal
  Query Plan
  
 
  SELECT STATEMENT[CHOOSE] Cost=97 Rows=2291 Bytes=27492
NESTED LOOPS
  TABLE ACCESS FULL EXECUTOR  [ANALYZED]
  INDEX UNIQUE SCAN COD_POSTAL_PK  [ANALYZED]


  select e.id_executor, c.localidade
from cod_postal c
,executor e
where c.id_cod_postal = e.codigo_postal
  Query Plan
  
 
  SELECT STATEMENT[CHOOSE] Cost=235 Rows=2291 Bytes=54984
HASH JOIN
  TABLE ACCESS FULL EXECUTOR  [ANALYZED]
  TABLE ACCESS FULL COD_POSTAL  [ANALYZED]

  Renan Medeiros  escreveu:Pq vc nao coloca os planos de execução de cada
 comando aqui no email ?
  Ficará mais fácil de se analisar/entender a situação.




   Oi Alex!
  
Ainda estou confusa! Quando eu retorno no select somente colunas da
   tabela executor, o indice da tabela codigo postal é utilizado. Tudo bem
   que a tabela executor é pequena e nesta ele faz full mesmo, mas a de
   código postal é gigante e o custo vai lá no céu!
  
Assim usa o indice da codigo_postal:
select e.id_executor
from cod_postal c
,executor e
where c.id_cod_postal = e.codigo_postal
  
  
  
mas assim não:
  
select e.id_executor, c.localidade
from cod_postal c
,executor e
where c.id_cod_postal = e.codigo_postal
  
Obrigada pela resposta
Elis
  
amp;quot;Alex Fernando Kirsten (CESUP)amp;quot;  escreveu:
   Oi
  
   Existe uma explicação lógica sim. Uma de suas tabelas deve ser
 muito
pequena e o Oracle não esta utilizando índice pq a quantidade de
   registros
recuperados é alta em relação a quantidade de registros da tabela. Vc
   pode
forçar a utilização do índice com o uso de um hint na sua consulta,
 mas
provavelmente não iria adiantar muito.
  
   Outro motivo possível é que seu índice está desabilitado.
  
   []’s
  
  
  
Alex Fernando Kirsten
  
Oracle 9i Database Administrator Certified Professional
  
Cetil Sistemas
  
Email: [EMAIL PROTECTED]
  
  
  
  _
  
De: oracle_br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED]
 Em
nome de Elis Azevedo Nery
Enviada em: sexta-feira, 11 de novembro de 2005 07:29
Para: oracle_br@yahoogrupos.com.br
Assunto: [oracle_br] Uso do indice
  
  
  
Olá!
  
Tenho este select simples com join de duas tabelas:
  
  
select e.id_executor, c.localidade
from cod_postal c
,executor e
where c.id_cod_postal = e.codigo_postal
  
  
Se eu coloco no select colunas da tabela cod_postal, não utiliza o
 indice
existente nesta tabela e acaba por fazer full. Alguém tem uma
 explicação
lógica para isto?
Já analisei as tabelas e os indices.
  
Obrigada
Elis Nery
  
  
-
Yahoo! Acesso Grátis: Internet rápida e grátis.
Instale o discador agora!
  
[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/oracle_br@yahoogrupos.com.br/

 

 --__
___
Area de download do grupo - http://www.4shared.com/dir/101727/a4dcc423
  
  
  
  
  
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!.
  
  
  
[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/oracle_br@yahoogrupos.com.br