[oracle_br] Índices no Oracle
Boa tarde pessoal! Podem me auxiliar por favor? A seguinte consulta: SELECT * FROM TMOV WHERE CODCXA = '12345' Retorna 3500 registros e está muito lenta. Em conta disso, criei um índice que aponta para TMOV.CODCXA No entanto, esse índice só é utilizado quando dou APENAS um: SELECT CODCXA FROM TMOV WHERE CODCXA = '12345' não é utilizado para: SELECT * FROM TMOV WHERE CODCXA = '12345' A minha dúvida: É normal isso no Oracle? Se eu quiser fazer SELECT * terei de criar um índice que enxergue todos os campos? Obs: tentei passar com HINT pra tentar forçar, mas não foi. Desde já agradeço!
Re: [oracle_br] Índices no Oracle
Yuri, se o índice foi utilizado na 1a. situação ele tbém deve estar sendo utilizado na 2a. situação, mas na primeira ele acessa somente o índice, na 2a. o otimizador acesso o índice, recupera o rowid da linha e vai para a tabela recuperar os dados das demais colunas. Para verificarmos isso com certeza, passe para nós o plano de execução. []s Fábio Prado www.fabioprado.net Em 3 de fevereiro de 2014 13:22, Yuri Menon yuri.me...@gmail.com escreveu: Boa tarde pessoal! Podem me auxiliar por favor? A seguinte consulta: SELECT * FROM TMOV WHERE CODCXA = '12345' Retorna 3500 registros e está muito lenta. Em conta disso, criei um índice que aponta para TMOV.CODCXA No entanto, esse índice só é utilizado quando dou APENAS um: SELECT CODCXA FROM TMOV WHERE CODCXA = '12345' não é utilizado para: SELECT * FROM TMOV WHERE CODCXA = '12345' A minha dúvida: É normal isso no Oracle? Se eu quiser fazer SELECT * terei de criar um índice que enxergue todos os campos? Obs: tentei passar com HINT pra tentar forçar, mas não foi. Desde já agradeço! -- Fábio Prado www.fabioprado.net Compartilhando conhecimentos e treinando profissionais em Bancos de Dados Oracle
Re: [oracle_br] Índices no Oracle
Yuri, Por acaso CODCXA não é do tipo number? Se for, retire as aspas simples ao realizar a consulta: SELECT * FROM TMOV WHERE CODCXA = 12345 Caso não resolva, mande pra gente o ddl de criação da tabela e do índice para facilitar a análise. Abraço 2014-02-03 Fabio Prado fbifa...@gmail.com: Yuri, se o índice foi utilizado na 1a. situação ele tbém deve estar sendo utilizado na 2a. situação, mas na primeira ele acessa somente o índice, na 2a. o otimizador acesso o índice, recupera o rowid da linha e vai para a tabela recuperar os dados das demais colunas. Para verificarmos isso com certeza, passe para nós o plano de execução. []s Fábio Prado www.fabioprado.net Em 3 de fevereiro de 2014 13:22, Yuri Menon yuri.me...@gmail.comescreveu: Boa tarde pessoal! Podem me auxiliar por favor? A seguinte consulta: SELECT * FROM TMOV WHERE CODCXA = '12345' Retorna 3500 registros e está muito lenta. Em conta disso, criei um índice que aponta para TMOV.CODCXA No entanto, esse índice só é utilizado quando dou APENAS um: SELECT CODCXA FROM TMOV WHERE CODCXA = '12345' não é utilizado para: SELECT * FROM TMOV WHERE CODCXA = '12345' A minha dúvida: É normal isso no Oracle? Se eu quiser fazer SELECT * terei de criar um índice que enxergue todos os campos? Obs: tentei passar com HINT pra tentar forçar, mas não foi. Desde já agradeço! -- Fábio Prado www.fabioprado.net Compartilhando conhecimentos e treinando profissionais em Bancos de Dados Oracle
Re: [oracle_br] Índices no Oracle
Qual o TOTAL de registros dessa tabela? Em 3 de fevereiro de 2014 13:43, Ivan Ricardo Schuster ivanr...@gmail.comescreveu: Yuri, Por acaso CODCXA não é do tipo number? Se for, retire as aspas simples ao realizar a consulta: SELECT * FROM TMOV WHERE CODCXA = 12345 Caso não resolva, mande pra gente o ddl de criação da tabela e do índice para facilitar a análise. Abraço 2014-02-03 Fabio Prado fbifa...@gmail.com: Yuri, se o índice foi utilizado na 1a. situação ele tbém deve estar sendo utilizado na 2a. situação, mas na primeira ele acessa somente o índice, na 2a. o otimizador acesso o índice, recupera o rowid da linha e vai para a tabela recuperar os dados das demais colunas. Para verificarmos isso com certeza, passe para nós o plano de execução. []s Fábio Prado www.fabioprado.net Em 3 de fevereiro de 2014 13:22, Yuri Menon yuri.me...@gmail.comescreveu: Boa tarde pessoal! Podem me auxiliar por favor? A seguinte consulta: SELECT * FROM TMOV WHERE CODCXA = '12345' Retorna 3500 registros e está muito lenta. Em conta disso, criei um índice que aponta para TMOV.CODCXA No entanto, esse índice só é utilizado quando dou APENAS um: SELECT CODCXA FROM TMOV WHERE CODCXA = '12345' não é utilizado para: SELECT * FROM TMOV WHERE CODCXA = '12345' A minha dúvida: É normal isso no Oracle? Se eu quiser fazer SELECT * terei de criar um índice que enxergue todos os campos? Obs: tentei passar com HINT pra tentar forçar, mas não foi. Desde já agradeço! -- Fábio Prado www.fabioprado.net Compartilhando conhecimentos e treinando profissionais em Bancos de Dados Oracle
[oracle_br] RMAN-06024: no backup or copy of the control file found to restore
Boa tarde a todos. Ao realizar o restore do controlfile me deparo com o seguinte erro: RMAN run { ALLOCATE CHANNEL C1 TYPE 'SBT_TAPE' PARMS 'ENV=(TDPO_OPTFILE=/opt/tivoli/tsm/client/oracle/bin64/tdpo.opt)'; RESTORE CONTROLFILE; } released channel: C1 RMAN-00571: === RMAN-00569: === ERROR MESSAGE STACK FOLLOWS === RMAN-00571: === RMAN-03002: failure of restore command at 02/03/2014 13:20:13 RMAN-06026: some targets not found - aborting restore RMAN-06024: no backup or copy of the control file found to restore Antes de restaurar o controlfile, restaurei o SPFILE da mesma forma e foi restaurado com sucesso. run { ALLOCATE CHANNEL C1 TYPE 'SBT_TAPE' PARMS 'ENV=(TDPO_OPTFILE=/opt/tivoli/tsm/client/oracle/bin64/tdpo.opt)'; RESTORE SPFILE TO '/u01/app/oracle/product/11.2.0.3/dbhome_1/dbs/spfileXUXA.ora'; } Engraçado que eu listo o backup do controlfile e ele me mostra: RMAN list backup of controlfile; List of Backup Sets === BS Key Type LV Size Device Type Elapsed Time Completion Time --- -- -- --- --- 426 Full 10.00M SBT_TAPE 00:00:07 22-JAN-14 BP Key: 438 Status: AVAILABLE Compressed: NO Tag: BACKUP_DIARIO Handle: full_XUXA_10_837522849_0aoun5d1_1 Media: 50253 Control File Included: Ckp SCN: 10882503 Ckp time: 22-JAN-14 Estou logado no catálogo, com a instância no modo NOMOUNT e com o DBID setado. Alguém pode ajudar? Eu tinha realizado o teste de recuperação de desastre e nada disso ocorreu, estou achando estranho, pois estou realizando os mesmos procedimentos.
Re: [oracle_br] Índices no Oracle
Yuri, É importante informar qual a sua versão de Banco de Dados. Há muitas mudança significativas entre elas: Features Index fast full scan Consideration of bitmap access to paths for tables with only B-tree indexes Complex view merging Peeking into user-defined bind variables Index joins Dynamic sampling Query rewrite enables Skip unusable indexes Automatically compute index statistics as part of creation Cost-based query transformations Allow rewrites with multiple MVs and/or base tables Adaptive cursor sharing Use extended statistics to estimate selectivity Use native implementation for full outer joins Partition pruning using join filtering Group by placement optimization Null aware antijoins As 6 últimas somente no Oracle 11g. Também é importante saber se o Banco de dados foi configurado para OLAP ou OLTP, visto que o otimizador e os parameters do banco são diferentes para cada um deles. Verifique também se as estatísticas da tabela estão sendo coletadas. Nos passe o plano de execução e as informações: Selectivity = Number of rows satisfying a condition / Total number of rows Selectivity is the estimated proportion of a row set retrieved by a particular predicate or combination of predicates. It is expressed as a value between 0.0 and 1.0: High selectivity: Small proportion of rows Low selectivity: Big proportion of rows Selectivity computation: If no statistics: Use dynamic sampling If no histograms: Assume even distribution of rows Statistic information: DBA_TABLES and DBA_TAB_STATISTICS (NUM_ROWS) DBA_TAB_COL_STATISTICS (NUM_DISTINCT, DENSITY, HIGH/LOW_VALUE,…) Cardinality = Selectivity * Total number of rows Expected number of rows retrieved by a particular operation in the execution plan Vital figure to determine join, filters, and sort costs Simple example: SELECT days FROM courses WHERE dev_name = 'ANGEL'; The number of distinct values in DEV_NAME is 203. The number of rows in COURSES (original cardinality) is 1018. Selectivity = 1/203 = 4.926*e-03 Cardinality = (1/203)*1018 = 5.01 (rounded off to 6) Att. Sérgio Chaves. - Original Message - From: Yuri Menon yuri.me...@gmail.com To: oracle br oracle_br@yahoogrupos.com.br Sent: Segunda-feira, 3 de Fevereiro de 2014 13:22:14 Subject: [oracle_br] Índices no Oracle Boa tarde pessoal! Podem me auxiliar por favor? A seguinte consulta: SELECT * FROM TMOV WHERE CODCXA = '12345' Retorna 3500 registros e está muito lenta. Em conta disso, criei um índice que aponta para TMOV.CODCXA No entanto, esse índice só é utilizado quando dou APENAS um: SELECT CODCXA FROM TMOV WHERE CODCXA = '12345' não é utilizado para: SELECT * FROM TMOV WHERE CODCXA = '12345' A minha dúvida: É normal isso no Oracle? Se eu quiser fazer SELECT * terei de criar um índice que enxergue todos os campos? Obs: tentei passar com HINT pra tentar forçar, mas não foi. Desde já agradeço!
Re: [oracle_br] Índices no Oracle
Yuri, Veja também em http://www.devmedia.com.br/tuning-no-oracle-parte-02/16297. Nota 4 Nota 4. Seletividade de uma consulta Podemos chamar seletividade como sendo a relação estabelecida entre a quantidade de linhas de uma tabela retornadas por uma consulta com a quantidade total de linhas da mesma tabela. É exatamente através da análise dessa seletividade que o Oracle decide entre usar um índice ou varrer todos os blocos de uma tabela. Por exemplo, imaginemos uma tabela com 1 milhão de linhas: se uma consulta na mesma retorna 900 mil linhas é muito mais rápido o Oracle varrer a tabela toda do que utilizar um índice. Apenas para termos um parâmetro, qualquer seletividade acima de 10% do valor total de linhas de uma tabela é considerada alta, e dificilmente o Oracle utilizará um índice nessa consulta.. Atenciosamente, Sérgio Chaves . - Mensagem original - De: Sérgio Luiz Rodrigues Chaves sergio.cha...@elumini.com.br Para: oracle br oracle_br@yahoogrupos.com.br Enviadas: Mon, 03 Feb 2014 14:26:40 -0200 (BRST) Assunto: Re: [oracle_br] Índices no Oracle Yuri, É importante informar qual a sua versão de Banco de Dados. Há muitas mudança significativas entre elas: Features Index fast full scan Consideration of bitmap access to paths for tables with only B-tree indexes Complex view merging Peeking into user-defined bind variables Index joins Dynamic sampling Query rewrite enables Skip unusable indexes Automatically compute index statistics as part of creation Cost-based query transformations Allow rewrites with multiple MVs and/or base tables Adaptive cursor sharing Use extended statistics to estimate selectivity Use native implementation for full outer joins Partition pruning using join filtering Group by placement optimization Null aware antijoins As 6 últimas somente no Oracle 11g. Também é importante saber se o Banco de dados foi configurado para OLAP ou OLTP, visto que o otimizador e os parameters do banco são diferentes para cada um deles. Verifique também se as estatísticas da tabela estão sendo coletadas. Nos passe o plano de execução e as informações: Selectivity = Number of rows satisfying a condition / Total number of rows Selectivity is the estimated proportion of a row set retrieved by a particular predicate or combination of predicates. It is expressed as a value between 0.0 and 1.0: High selectivity: Small proportion of rows Low selectivity: Big proportion of rows Selectivity computation: If no statistics: Use dynamic sampling If no histograms: Assume even distribution of rows Statistic information: DBA_TABLES and DBA_TAB_STATISTICS (NUM_ROWS) DBA_TAB_COL_STATISTICS (NUM_DISTINCT, DENSITY, HIGH/LOW_VALUE,…) Cardinality = Selectivity * Total number of rows Expected number of rows retrieved by a particular operation in the execution plan Vital figure to determine join, filters, and sort costs Simple example: SELECT days FROM courses WHERE dev_name = 'ANGEL'; The number of distinct values in DEV_NAME is 203. The number of rows in COURSES (original cardinality) is 1018. Selectivity = 1/203 = 4.926*e-03 Cardinality = (1/203)*1018 = 5.01 (rounded off to 6) Att. Sérgio Chaves. - Original Message - From: Yuri Menon yuri.me...@gmail.com To: oracle br oracle_br@yahoogrupos.com.br Sent: Segunda-feira, 3 de Fevereiro de 2014 13:22:14 Subject: [oracle_br] Índices no Oracle Boa tarde pessoal! Podem me auxiliar por favor? A seguinte consulta: SELECT * FROM TMOV WHERE CODCXA = '12345' Retorna 3500 registros e está muito lenta. Em conta disso, criei um índice que aponta para TMOV.CODCXA No entanto, esse índice só é utilizado quando dou APENAS um: SELECT CODCXA FROM TMOV WHERE CODCXA = '12345' não é utilizado para: SELECT * FROM TMOV WHERE CODCXA = '12345' A minha dúvida: É normal isso no Oracle? Se eu quiser fazer SELECT * terei de criar um índice que enxergue todos os campos? Obs: tentei passar com HINT pra tentar forçar, mas não foi. Desde já agradeço!
[oracle_br] RE: RMAN-06024: no backup or copy of the control file found to restore
Mandando a mesma sintaxe do SPFILE, o que acontece? RESTORE CONTROLFILE TO '/u01/app/oracle/product/11.2.0.3/dbhome_1/dbs/control_teste.ora' FROM AUTOBACKUP db_name='nome_da_sua_instancia'; Ederson Elias DBA Oracle http://br.linkedin.com/pub/ederson-elias/24/8b/8b0 Labor improbus omnia vincit
Re: [oracle_br] Índices no Oracle
Sergio, é por isso mesmo que eu perguntei no e-mail anterior qual era a quantidade total de linhas dessa tabela! De repente é por isso que o índice não esteja sendo utilizado. Em 3 de fevereiro de 2014 17:24, Sérgio Luiz Rodrigues Chaves sergio.cha...@elumini.com.br escreveu: Yuri, Veja também em http://www.devmedia.com.br/tuning-no-oracle-parte-02/16297. Nota 4 Nota 4. Seletividade de uma consulta Podemos chamar seletividade como sendo a relação estabelecida entre a quantidade de linhas de uma tabela retornadas por uma consulta com a quantidade total de linhas da mesma tabela. É exatamente através da análise dessa seletividade que o Oracle decide entre usar um índice ou varrer todos os blocos de uma tabela. Por exemplo, imaginemos uma tabela com 1 milhão de linhas: se uma consulta na mesma retorna 900 mil linhas é muito mais rápido o Oracle varrer a tabela toda do que utilizar um índice. Apenas para termos um parâmetro, qualquer seletividade acima de 10% do valor total de linhas de uma tabela é considerada alta, e dificilmente o Oracle utilizará um índice nessa consulta.. Atenciosamente, Sérgio Chaves . - Mensagem original - De: Sérgio Luiz Rodrigues Chaves sergio.cha...@elumini.com.br Para: oracle br oracle_br@yahoogrupos.com.br Enviadas: Mon, 03 Feb 2014 14:26:40 -0200 (BRST) Assunto: Re: [oracle_br] Índices no Oracle Yuri, É importante informar qual a sua versão de Banco de Dados. Há muitas mudança significativas entre elas: Features Index fast full scan Consideration of bitmap access to paths for tables with only B-tree indexes Complex view merging Peeking into user-defined bind variables Index joins Dynamic sampling Query rewrite enables Skip unusable indexes Automatically compute index statistics as part of creation Cost-based query transformations Allow rewrites with multiple MVs and/or base tables Adaptive cursor sharing Use extended statistics to estimate selectivity Use native implementation for full outer joins Partition pruning using join filtering Group by placement optimization Null aware antijoins As 6 últimas somente no Oracle 11g. Também é importante saber se o Banco de dados foi configurado para OLAP ou OLTP, visto que o otimizador e os parameters do banco são diferentes para cada um deles. Verifique também se as estatísticas da tabela estão sendo coletadas. Nos passe o plano de execução e as informações: Selectivity = Number of rows satisfying a condition / Total number of rows Selectivity is the estimated proportion of a row set retrieved by a particular predicate or combination of predicates. It is expressed as a value between 0.0 and 1.0: High selectivity: Small proportion of rows Low selectivity: Big proportion of rows Selectivity computation: If no statistics: Use dynamic sampling If no histograms: Assume even distribution of rows Statistic information: DBA_TABLES and DBA_TAB_STATISTICS (NUM_ROWS) DBA_TAB_COL_STATISTICS (NUM_DISTINCT, DENSITY, HIGH/LOW_VALUE,...) Cardinality = Selectivity * Total number of rows Expected number of rows retrieved by a particular operation in the execution plan Vital figure to determine join, filters, and sort costs Simple example: SELECT days FROM courses WHERE dev_name = 'ANGEL'; The number of distinct values in DEV_NAME is 203. The number of rows in COURSES (original cardinality) is 1018. Selectivity = 1/203 = 4.926*e-03 Cardinality = (1/203)*1018 = 5.01 (rounded off to 6) Att. Sérgio Chaves. - Original Message - From: Yuri Menon yuri.me...@gmail.com To: oracle br oracle_br@yahoogrupos.com.br Sent: Segunda-feira, 3 de Fevereiro de 2014 13:22:14 Subject: [oracle_br] Índices no Oracle Boa tarde pessoal! Podem me auxiliar por favor? A seguinte consulta: SELECT * FROM TMOV WHERE CODCXA = '12345' Retorna 3500 registros e está muito lenta. Em conta disso, criei um índice que aponta para TMOV.CODCXA No entanto, esse índice só é utilizado quando dou APENAS um: SELECT CODCXA FROM TMOV WHERE CODCXA = '12345' não é utilizado para: SELECT * FROM TMOV WHERE CODCXA = '12345' A minha dúvida: É normal isso no Oracle? Se eu quiser fazer SELECT * terei de criar um índice que enxergue todos os campos? Obs: tentei passar com HINT pra tentar forçar, mas não foi. Desde já agradeço!
Re: [oracle_br] RE: RMAN-06024: no backup or copy of the control file found to restore
Esderson meu brother, acho que descobri o motivo desse erro está acontecendo, veja se estou corrento, por favor. Eu já havia realizado um teste, ontem mesmo,de desastre conforme o tópico anterior no qual você o chiappa me ajudaram mandando umas dicas e o script, então só fiz ajustar os scripts enviados para o meu cenário e funcionou tudo corretamente, abrindo o database no final com resetlogs. Daí eu dropei a base novamente para fazer o teste novamente só que desta vez homologando e ageitando os scripts para documentação, só que quando chegou na hora do restore do controlfile me deu esse erro, será que o motivo é por conta do RESETLOGS? Da nova incarnãção que ficou guardada no catálogo? Em Segunda-feira, 3 de Fevereiro de 2014 16:50, ederson200...@yahoo.com.br ederson200...@yahoo.com.br escreveu: Mandando a mesma sintaxe do SPFILE, o que acontece? RESTORE CONTROLFILE TO '/u01/app/oracle/product/11.2.0.3/dbhome_1/dbs/control_teste.ora' FROM AUTOBACKUP db_name='nome_da_sua_instancia'; Ederson Elias DBA Oracle http://br.linkedin.com/pub/ederson-elias/24/8b/8b0 Labor improbus omnia vincit
Re: [oracle_br] RE: RMAN-06024: no backup or copy of the control file found to restore
Era isso mesmo Ederson, era o que eu estava prevendo, realizei um LIST INCARNATION; e setei para a incarnação anterior, agora consegui restaurar o controlfile, pois já tinha aberto o database com resetlogs anteriormente. Em Segunda-feira, 3 de Fevereiro de 2014 17:13, Rafael Mendonca raffaell.t...@yahoo.com escreveu: Esderson meu brother, acho que descobri o motivo desse erro está acontecendo, veja se estou corrento, por favor. Eu já havia realizado um teste, ontem mesmo,de desastre conforme o tópico anterior no qual você o chiappa me ajudaram mandando umas dicas e o script, então só fiz ajustar os scripts enviados para o meu cenário e funcionou tudo corretamente, abrindo o database no final com resetlogs. Daí eu dropei a base novamente para fazer o teste novamente só que desta vez homologando e ageitando os scripts para documentação, só que quando chegou na hora do restore do controlfile me deu esse erro, será que o motivo é por conta do RESETLOGS? Da nova incarnãção que ficou guardada no catálogo? Em Segunda-feira, 3 de Fevereiro de 2014 16:50, ederson200...@yahoo.com.br ederson200...@yahoo.com.br escreveu: Mandando a mesma sintaxe do SPFILE, o que acontece? RESTORE CONTROLFILE TO '/u01/app/oracle/product/11.2.0.3/dbhome_1/dbs/control_teste.ora' FROM AUTOBACKUP db_name='nome_da_sua_instancia'; Ederson Elias DBA Oracle http://br.linkedin.com/pub/ederson-elias/24/8b/8b0 Labor improbus omnia vincit
Re: [oracle_br] Índices no Oracle
Colega, tudo jóia ? Sim, ainda estou vivo , e de vez em quando ainda passo por aqui :) Sobre as suas perguntas , seguinte : NÃO, não é verdade que Obrigatoriamente um SELECT * força um full-table scan, e para a idéia de que seria preciso indexar todas as colunas para que um SELECT * usar índice, a resposta é : bullshit, bobeira, absurdo, ridículo, siiim ?? Aliàs, antes de demonstrar, vamos pensar juntos : um índice ** não ** acelera uma consulta por magia de unicórnio ou pó de pirlimpimpim : entre outras coisas (como a questão de organização interna que permite busca por 'poda' de valores), o fato é que um índice simplesmente é uma tabela reduzida, que tem só as colunas-chave e o rowid de cada linha, assim é por isso que uma busca no índice é mais rápida, o índice é MUITÍSSIMO MENOR, né ?? Vc não acha que se vc criar um índice com TODAS as colunas da tabela, vc não acaba tendo uma estrutura de tamanho + ou - similar à da tabela ??? Que vantagem Maria leva Segundo ponto : o RDBMS Oracle (ao menos desde a versão 8i, mas principalmente a partir do 9i) largou mão de otimização RBO e adotou a CBO, ie : ele ** não ** adivinha, ** não ** usa regras para decidir se usa ou não o índice, se é mais vantajoso ler a tabela de uma vez ou se é melhor ler o índice : ele usa as ESTATÍSTICAS que indicam quantos registros serão retornadas ao se filtrar por cada coluna COM o valor indicado no WHERE, okdoc ?? ENTÃO, necessariamente se o seu índice não está sendo usado, MUITO RPOVAVELMENTE o valor que vc informou retorna uma grande qtdade de linhas e então compensa mais partir pro FTS, ** OU ** as estatísticas não registram a distribuição de dados corretas A minha demonstração (num banco 10.2.0.5 EE no caso) : = crio a tabela e preencho com dados : SQL set lines 200 pages 5 SQL create table TAB_TESTE as (select * from dba_objects where 1=2); Tabela criada. SQL alter table TAB_TESTE parallel 4; SQL insert /*+ APPEND */ into TAB_TESTE (select * from dba_objects); 51496 linhas criadas. SQL commit; Commit concluido. SQL insert /*+ APPEND */ into TAB_TESTE (select * from dba_objects); 51496 linhas criadas. SQL commit; Commit concluido. == okdoc , vamos ter na coluna indexada um valor RARO, que traz POUQUÍSSIMAS linhas, e assim vale a pena ser recuperado por índice : SQL insert into TAB_TESTE (owner) values('CHIAPPA'); 1 linha criada. SQL commit 2 ; Commit concluido. = crio o índice : SQL create index IDX_TESTE_OWNER on TAB_TESTE(owner); Indice criado. Óia isso : select * usando o índice : SQL set autotrace on SQL select * from TAB_TESTE where owner='CHIAPPA'; OWNER -- OBJECT_NAME SUBOBJECT_NAME OBJECT_ID DATA_OBJECT_ID OBJECT_TYPE -- -- -- --- CREATED LAST_DDL TIMESTAMP STATUS T G S --- --- - - - CHIAPPA Plano de Execuc?o -- Plan hash value: 1974746346 --- | Id | Operation | Name| Rows | Bytes | Cost (%C PU)| Time | --- | 0 | SELECT STATEMENT| | 1 | 177 | 2 (0)| 00:00:01 | | 1 | TABLE ACCESS BY INDEX ROWID| TAB_TESTE | 1 | 177 | 2 (0)| 00:00:01 | |* 2 | INDEX RANGE SCAN | IDX_TESTE_OWNER | 1 | | 1 (0)| 00:00:01 | --- Predicate Information (identified by operation id): --- 2 - access(OWNER='CHIAPPA') Note - - dynamic sampling used for this statement Estatistica -- 9 recursive calls 0 db block gets 74 consistent gets 1 physical reads 0 redo size 1354 bytes sent via SQL*Net to client 492 bytes received via SQL*Net from client 2 SQL*Net roundtrips to/from client 0 sorts (memory) 0 sorts (disk) 1 rows processed == agora a contra-prova : um valor do índice que SEI que é repetido milhares de vezes : SQL select * from TAB_TESTE where owner='SYS'; . SYS /a7359489_XDBServletContainer 38589JAVA CLASS 08/07/13 08/07/13 2013-07-08:17:21:51 VALID N N N SYS oracle/xdb/spi/XDBResource 38590JAVA CLASS 08/07/13 08/07/13 2013-07-08:17:21:51 VALID N N N SYS oracle/xdb/spi/Resource