Caro Chiappa

Vc tem tempo pra explicar a function abaixo... nao entendi esse tal de 
determinstic
Estou adorando aprender essas funcionalidades q eu não conhecia.. muito 
obrigada!

Obrigada

Cris
  ----- Original Message ----- 
  From: jlchiappa 
  To: oracle_br@yahoogrupos.com.br 
  Sent: Thursday, January 05, 2006 2:20 PM
  Subject: [oracle_br] Re: Indice Baseado em Funcao no 9I funciona com RBO ?


  Segue um exemplinho, pra não ficar tão "no ar" :


  [EMAIL PROTECTED]:SQL>show parameters query

  NAME                                 TYPE        VALUE
  ------------------------------------ ----------- ---------------
  query_rewrite_enabled                string      FALSE
  query_rewrite_integrity              string      enforced

  [EMAIL PROTECTED]:SQL>alter session set OPTIMIZER_MODE=RULE;

  Sessão alterada.

  [EMAIL PROTECTED]:SQL>select empno, ename, comm, sal from emp;

               EMPNO ENAME                    COMM                SAL
  ------------------ ---------- ------------------ ------------------
                7369 SMITH                                        800
                7499 ALLEN                     300               1600
                7521 WARD                      500               1250
                7566 JONES                                       2975
                7654 MARTIN                   1400               1250
                7698 BLAKE                                       2850
                7782 CLARK                                       2450
                7788 SCOTT                                       3000
                7839 KING                                        5000
                7844 TURNER                      0               1500
                7876 ADAMS                                       1100
                7900 JAMES                                        950
                7902 FORD                                        3000
                7934 MILLER                                      1300

  [EMAIL PROTECTED]:SQL>create or replace function func_comm_not_nulo(P_COMM 
  number) return number
    2  deterministic
    3  as
    4  BEGIN
    5     if P_COMM is null then
    6        return null;
    7     end if;
    8     return 0;
    9  END;
  10  /

  Função criada.

  [EMAIL PROTECTED]:SQL>
  [EMAIL PROTECTED]:SQL>create index IDX_COMM_NOT_NULO on EMP
  (func_comm_not_nulo(COMM));

  Índice criado.

  [EMAIL PROTECTED]:SQL>set autotrace on
  [EMAIL PROTECTED]:SQL>select * from emp where func_comm_not_nulo(COMM)=0;

               EMPNO ENAME      JOB                      MGR 
  HIREDATE                SAL               COMM             DEPTNO
  ------------------ ---------- --------- ------------------ -------- --
  ---------------- ------------------ ------------------
                7499 ALLEN      SALESMAN                7698 
  20/02/81               1600                300                 30
                7521 WARD       SALESMAN                7698 
  22/02/81               1250                500                 30
                7654 MARTIN     SALESMAN                7698 
  28/09/81               1250               1400                 30
                7844 TURNER     SALESMAN                7698 
  08/09/81               1500                  0                 30


  Plano de Execução
  ----------------------------------------------------------
     0      SELECT STATEMENT Optimizer=CHOOSE
     1    0   TABLE ACCESS (FULL) OF 'EMP'




  Estatística
  ----------------------------------------------------------
           41  recursive calls
            0  db block gets
           14  consistent gets
            0  physical reads
            0  redo size
          910  bytes sent via SQL*Net to client
          499  bytes received via SQL*Net from client
            2  SQL*Net roundtrips to/from client
            0  sorts (memory)
            0  sorts (disk)
            4  rows processed


  [EMAIL PROTECTED]:SQL> select /*+ INDEX(emp IDX_COMM_NOT_NULO) */ * from 
  emp where func_comm_not_nulo(COMM)=0;

               EMPNO ENAME      JOB                      MGR 
  HIREDATE                SAL               COMM             DEPTNO
  ------------------ ---------- --------- ------------------ -------- --
  ---------------- ------------------ ------------------
                7499 ALLEN      SALESMAN                7698 
  20/02/81               1600                300                 30
                7521 WARD       SALESMAN                7698 
  22/02/81               1250                500                 30
                7654 MARTIN     SALESMAN                7698 
  28/09/81               1250               1400                 30
                7844 TURNER     SALESMAN                7698 
  08/09/81               1500                  0                 30


  Plano de Execução
  ----------------------------------------------------------
     0      SELECT STATEMENT Optimizer=CHOOSE (Cost=1 Card=4 Bytes=348)
     1    0   TABLE ACCESS (BY INDEX ROWID) OF 'EMP' (Cost=1 Card=4 Byte
            s=348)

     2    1     INDEX (RANGE SCAN) OF 'IDX_COMM_NOT_NULO' (NON-UNIQUE) (
            Cost=1 Card=2)





  Estatística
  ----------------------------------------------------------
          423  recursive calls
            0  db block gets
           64  consistent gets
            9  physical reads
            0  redo size
          910  bytes sent via SQL*Net to client
          499  bytes received via SQL*Net from client
            2  SQL*Net roundtrips to/from client
            4  sorts (memory)
            0  sorts (disk)
            4  rows processed

  [EMAIL PROTECTED]:SQL>

  []s

  Chiappa
  --- Em oracle_br@yahoogrupos.com.br, "jlchiappa" <[EMAIL PROTECTED]> 
  escreveu
  >
  > Nada disso : as estatísticas são usadas pro CBO poder escolher as 
  > possibilidades e montar um plano, MAS quando vc usa um hint vc ** 
  já 
  > está ** indicando que tipo de plano quer, então não 
  obrigatoriamente 
  > vc tem que calcular stats, ele já "sabe" que tipo de plano vc 
  quer... 
  > 
  >  ==> CLARO, de modo nenhum isso é o recomendado, mas ** se ** o teu 
  > sistema está em RBO, é tapar o nariz e ir pras hints...
  > 
  > []s
  > 
  >  Chiappa
  > --- Em oracle_br@yahoogrupos.com.br, Marcelo Cauduro 
  <[EMAIL PROTECTED]> 
  > escreveu
  > >
  > > Eu acho que sim, mas não ter certeza  :
  > > 
  > > Se eu forçar o CBO via HINTs terei de coletar estatisticas ?
  > > 
  > > On 1/5/06, jlchiappa <[EMAIL PROTECTED]> wrote:
  > > >
  > > >  Não funciona : vc tem que "forçar" o CBO via HINTs , ou coisa 
  do 
  > tipo
  > > > pra poder usar FBI, se o seu sistema ainda está em RBO.
  > > >
  > > > []s
  > > >
  > > > Chiappa
  > > > --- Em oracle_br@yahoogrupos.com.br, Marcelo Cauduro 
  > <[EMAIL PROTECTED]>
  > > > escreveu
  > > > >
  > > > > Pessoal,
  > > > >
  > > > > Indice Baseado em Funcao no 9I funciona com RBO - Otimizador 
  por
  > > > Regra ?
  > > > >
  > > > >
  > > > > [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=12feq5jj2/M=387526.7663462.8550203.1588051
  > /D=brclubs/S=2137114689:HM/Y=BR/EXP=1136475593/A=3215516/R=2/SIG=16e
  56
  > adpd/*http://landingstrip.dell.com/landingstrip/ls.asp?
  > 
  CID=10029&LID=288321&DGC=BA&DGStor=DHS&DGSite=Yahoo&Conum=BR&DURL=http
  > ://www1.la.dell.com/content/products/category.aspx/desktops?c%3Dbr%
  > 26l%3Dpt%26s%3Ddhs>
  > > > ------------------------------
  > > > *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]<oracle_br-
  > [EMAIL PROTECTED]>
  > > >
  > > >    - 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/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

    a.. Para visitar o site do seu grupo na web, acesse:
    http://br.groups.yahoo.com/group/oracle_br/
      
    b.. Para sair deste grupo, envie um e-mail para:
    [EMAIL PROTECTED]
      
    c.. 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/ 
--------------------------------------------------------------------------------------------------------------------------__________________________________________________________________
Moderador e Fundador: Dorian Anderson Soutto [EMAIL PROTECTED]
__________________________________________________________________ 
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