Mas na sua demonstração não tem absolutamente NENHUMA diferença...
Mesmo plano execução, mesmo custo, mesmo tempo de execução....
Apenas 1 segundo pra cada uma das duas execuções.

Como a sua demostração foi com uma quantidade muito pequena
de dados (o custo ficou muito baixo), não dá pra provar nada.




2012/9/10 [Paulo Sousa] <paulorso...@gmail.com>

> Oi, pessoal. Fiz uma demonstração, mas só consegui mostrar o tempo de CPU
> aqui. Eu não tenho mais o ambiente que eu usava antes, que era uma réplica
> de um bd de produção, aí a diferença de tempo dava uns bons segundos.  De
> qualquer forma, segue:
>
> (Só mexia nos índices comuns, nada de uniques).
>
> SQL>create sequence seq_test_tbs
> start with 1
> nocache
> nocycle
> increment by 1;  2    3    4    5
>
> Sequence created.
>
> SQL>create table test_tbs (
>    test_tbs_id number(10)
>  , test_tbs_desc varchar2(30)
>  , test_tbs_type number
>  , constraint pk_test_tbs primary key (test_tbs_id)
> );  2    3    4    5    6
>
> Table created.
>
> SQL> begin
>   2
>         for i in 1..2000000
>   3    4        loop
>   5
>   6             insert into test_tbs(
>   7               test_tbs_id
>   8             , test_tbs_desc
>   9             , test_tbs_type
>                 ) values(
>  10   11                  seq_test_tbs.nextval
>  12             , 'description ' || i
>  13             , i
>  14             );
>  15
>  16             if( i = 1000000)
>                 then
>  17   18
>  19                     commit;
>
>  20   21                end if;
>  22
>  23     end loop;
>  24
>  25     commit;
>  26
>  27  end;
>  28  /
>
>
>
> PL/SQL procedure successfully completed.
>
> SQL>  update test_tbs
>  set test_tbs_desc = 'index_usage'
>  where test_tbs_id
>  BETWEEN 500000 AND 1500000;  2    3    4
>
> 1000001 rows updated.
>
> SQL> update test_tbs
>  set test_tbs_desc = 'index_usage2'
>  where test_tbs_id
>  BETWEEN 1500001 AND 2000000;  2    3    4
>
> 500000 rows updated.
>
> SQL> commit;
>
> Commit complete.
>
> SQL> set timing on
>
> SQL> create index indx_test_tbs_desc on test_tbs(test_tbs_desc);
>
> Index created.
>
> Elapsed: 00:00:06.21
>
> SQL> set autot trace exp
>
> SQL>  select * from test_tbs where test_tbs_desc = 'description 556'
>  and TEST_TBS_TYPE = 556;  2
> Elapsed: 00:00:00.01
>
> Execution Plan
> ----------------------------------------------------------
> Plan hash value: 3009671018
>
>
> --------------------------------------------------------------------------------------------------
> | Id  | Operation                   | Name               | Rows  | Bytes |
> Cost (%CPU)| Time     |
>
> --------------------------------------------------------------------------------------------------
> |   0 | SELECT STATEMENT            |                    |   207 |  8901 |
>     8   (0)| 00:00:01 |
> |*  1 |  TABLE ACCESS BY INDEX ROWID| TEST_TBS           |   207 |  8901 |
>     8   (0)| 00:00:01 |
> |*  2 |   INDEX RANGE SCAN          | INDX_TEST_TBS_DESC |   111 |       |
>     2   (0)| 00:00:01 |
>
> --------------------------------------------------------------------------------------------------
>
> Predicate Information (identified by operation id):
> ---------------------------------------------------
>
>    1 - filter("TEST_TBS_TYPE"=556)
>    2 - access("TEST_TBS_DESC"='description 556')
>
> Note
> -----
>    - dynamic sampling used for this statement (level=2)
>
> SQL> alter index indx_test_tbs_desc rebuild tablespace indexes;
>
> Index altered.
>
> Elapsed: 00:00:06.60
> SQL> select * from test_tbs where test_tbs_desc = 'description 556'
>  and TEST_TBS_TYPE = 556;  2
> Elapsed: 00:00:00.01
>
> Execution Plan
> ----------------------------------------------------------
> Plan hash value: 3009671018
>
>
> --------------------------------------------------------------------------------------------------
> | Id  | Operation                   | Name               | Rows  | Bytes |
> Cost (%CPU)| Time     |
>
> --------------------------------------------------------------------------------------------------
> |   0 | SELECT STATEMENT            |                    |   207 |  8901 |
>     5   (0)| 00:00:01 |
> |*  1 |  TABLE ACCESS BY INDEX ROWID| TEST_TBS           |   207 |  8901 |
>     5   (0)| 00:00:01 |
> |*  2 |   INDEX RANGE SCAN          | INDX_TEST_TBS_DESC |   111 |       |
>     2   (0)| 00:00:01 |
>
> --------------------------------------------------------------------------------------------------
>
> Predicate Information (identified by operation id):
> ---------------------------------------------------
>
>    1 - filter("TEST_TBS_TYPE"=556)
>    2 - access("TEST_TBS_DESC"='description 556')
>
> Note
> -----
>    - dynamic sampling used for this statement (level=2)
>
> Grato.
>
> Paulo Sousa
>
>
>
> 2012/9/6 Alessandro Lúcio Cordeiro da Silva <alecordeirosi...@yahoo.com.br
> >
>
> > **
> >
> >
> >
> >
> >     Pra mim, chega de tablespace separada entre dados e indices, não faz
> > sentido. Muitas pessoas dizem de "acesso concorrente entre dados e
> > indices", mas não existe isso. No Select você primeiro acesso o indices
> de
> > depois a tabela, no DML o Oracle acessa primeiro a tabela e depois o
> > indices. E num ambiente multi usuario, tudo é acesso concorrente. Também
> > ouve muito que "se você perder a tablespace indices só preciso recriar os
> > indices". Se você perder a tablespace indices  o seu sistema esta
> > indisponivel, não é mais 1980. Se você perdeu o indices não funciona mais
> > nada.
> >
> >    Aumentando a discursão, chega de datafiles de 2 e/ou 4 giga, ja
> estamos
> > no seculo 21. Pode criar o DataFile de 32 Giga (o tamanho maximo dos
> > datafiles em SmallFile) o ambiente suporta. Então criar uma tablespace
> > data, joga tudo la dentro e esta otimo. Vai estar tudo dentro Storage que
> > vai estar particinado.
> >
> > Alessandro Lúcio Cordeiro da Silva
> >         Analista de Sistema
> > þ http://alecordeirosilva.blogspot.com/
> > O tic-tac do relógio me lembra de algo muito importante que esta
> > acontecendo: estamos vivos.
> >                                 "Joana de Souza Schmitz Croxato"
> >
> >
> > ________________________________
> > De: Wanderson Barrence <wbarre...@gmail.com>
> > Para: oracle_br@yahoogrupos.com.br
> > Enviadas: Quinta-feira, 6 de Setembro de 2012 14:19
> > Assunto: [oracle_br] Os índices do banco de dados devem ficar numa
> > tablespace específica?
> >
> >
> >
> >
> > Olá Pessoal,
> >
> > Gostaria de saber se é interessante manter os índices do banco de dados
> > numa tablespace específica (TBS_INDEX)?
> >
> > Se sim, quais são as vantagens?
> >
> > Caso contrário, quais são as desvantagens?
> >
> > Att,
> >
> > --
> > Wanderson Barrence
> > DBA Oracle 10g/11g
> > Analista de Testes - CBTS
> > ----------------------------------------------------------
> > MSN: wbarre...@hotmail.com
> > ICQ: 170821994
> > Linkedin: http://br.linkedin.com/in/wbarrence
> >
> > [As partes desta mensagem que não continham texto foram removidas]
> >
> > [As partes desta mensagem que não continham texto foram removidas]
> >
> >
> >
>
>
> [As partes desta mensagem que não continham texto foram removidas]
>
>
>
> ------------------------------------
>
>
> --------------------------------------------------------------------------------------------------------------------------
> >Atenção! As mensagens do grupo ORACLE_BR são de acesso público e de
> inteira responsabilidade de seus remetentes.
> Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/
>
> --------------------------------------------------------------------------------------------------------------------------
> >Apostilas » Dicas e Exemplos » Função » Mundo Oracle » Package »
> Procedure » Scripts » Tutoriais - O GRUPO ORACLE_BR TEM SEU PROPRIO ESPAÇO!
> VISITE: http://www.oraclebr.com.br/
> ------------------------------------------------------------------------------------------------------------------------
> Links do Yahoo! Grupos
>
>
>


-- 
Att,


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

Responder a