A importância do uso de Índices

https://vietforent.com/about/ O objetivo de artigo é explicar a importância de uso de índices em tabelas que usam comandos SQL com literais.

https://drsurdis.com/about-us/ Porque o índice é importante?
Índices (Index) são importantes pois diminuem processamento e I/O em disco.
Quando usamos um comando SQL para retirar informações de uma tabela, na qual, a coluna da mesma não possui um índice, o Oracle faz um Acesso Total a Tabela para procurar o dado, ou seja, realiza-se um FULL TABLE SCAN degradando a performance do Banco de Dados Oracle.
Com o índice isso não ocorre, pois com o índice isso apontará para a linha exata da tabela daquela coluna retirando o dado muito mais rápido.
Mais informações sobre índices (indexes) acesse Documento Oracle (Index).

go
Vamos usar o explain plan para analisarmos o comando SQL para a realização de testes.
Mais informações sobre explain plan acesse Documento Oracle (Explain Plan).

go to link SQL> show user USER is "MASTER" SQL>

see url Com o usuário MASTER vamos executar o comando SQL para realizarmos o teste.

Buy Ambien Online Overnight SQL> set lines 155 SQL> set pages 1000 SQL> select prd_id, prd_name from master.product where prd_name = 'Product A321849'; PRD_ID PRD_NAME ---------- -------------------------------------------------- 321850 Product A321849 SQL>

Zolpidem Buy Online Vamos tirar um plano do comando acima e verificar o custo de CPU para executar o mesmo.

follow site SQL> explain plan for select prd_id, prd_name from master.product where prd_name = 'Product A321849'; Explained. SQL> select * from table(dbms_xplan.display()); PLAN_TABLE_OUTPUT ----------------------------------------------------------------------------- Plan hash value: 427209646 ----------------------------------------------------------------------------- | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | ----------------------------------------------------------------------------- | 0 | SELECT STATEMENT | | 30 | 1200 | 755 (1)| 00:00:10 | |* 1 | TABLE ACCESS FULL| PRODUCT | 30 | 1200 | 755 (1)| 00:00:10 | ----------------------------------------------------------------------------- Predicate Information (identified by operation id): --------------------------------------------------- 1 - filter("PRD_NAME"='Product A321849') Note ----- - dynamic sampling used for this statement (level=2) 17 rows selected. SQL>

enter Conforme informações acima, o comando acima está realizando um FULL TABLE SCAN com “Cost (%CPU)” de 755 (1) na tabela PRODUCT.
Observando o filtro na informação dos predicados podemos observar que está sendo feito um filtro pela coluna PRD_NAME da tabela PRODUCT.
Vamos criar um índice nesta coluna desta tabela e executar novamente o explain plan para retirar o plano de acesso após o índice criado.

go SQL> create index idx_prd_name_01 on product(prd_name); Index created. SQL> explain plan for select prd_id, prd_name from master.product where prd_name = 'Product A321849'; Explained. SQL> select * from table(dbms_xplan.display()); PLAN_TABLE_OUTPUT ----------------------------------------------------------------------------------------------- Plan hash value: 2904014416 ----------------------------------------------------------------------------------------------- | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | ----------------------------------------------------------------------------------------------- | 0 | SELECT STATEMENT | | 1 | 40 | 4 (0)| 00:00:01 | | 1 | TABLE ACCESS BY INDEX ROWID| PRODUCT | 1 | 40 | 4 (0)| 00:00:01 | |* 2 | INDEX RANGE SCAN | IDX_PRD_NAME_01 | 1 | | 3 (0)| 00:00:01 | ----------------------------------------------------------------------------------------------- Predicate Information (identified by operation id): --------------------------------------------------- 2 - access("PRD_NAME"='Product A321849') Note ----- - dynamic sampling used for this statement (level=2) 18 rows selected. SQL>

https://timlarison.com/quantum-jumps-book-review/ Conforme acima, após criado o índice “IDX_PRD_NAME_01” para a coluna “PRD_NAME” da tabela “PRODUCT” o custo de CPU diminuiu de 755 para 4, pois foi utilizado o índice para retirar a informação da tabela.
Portanto podemos concluir que o uso de índices é eficaz para o Tuning da Aplicação e do Banco de Dados.

%name A importância do uso de Índices

Autor: Maycon Tomiasi

follow url

go site Formado em Tecnologia da Informação na FIPP (Faculdade de Informática de Presidente Prudente), Analista DBA Oracle pela Teiko Soluções em Tecnologia da Informação, residente em Blumenau/ SC, Certificado OCP 10g/11g/12c, OCS 11g Implementation, OCE 11g Performance Tuning, OCE 11g RAC & GRID e OPN Specialist. Conhecimentos em PHP.