Uso dos Índices das tabelas nas consultas Oracle


Olá galera!
Hoje vamos falar um pouco de como a criação de índices, pode nos ajudar na hora de realizar as nossas consultas SQL. E ainda vamos demonstrar, que as vezes fazemos o uso errado da concatenação dos campos.
Primeiramente vamos criar os índices nas minhas tabelas, estarei usando como exemplo as tabelas NOTAFISCAL e a HF_HST, essa última referente ao histórico das notas fiscais.

Para criar os índices, basta executar os comandos sql abaixo:
 
CREATE INDEX INF ON NOTAFISCAL (COD_NF, COD_FUNC, COD_PROD);
 
CREATE INDEX INF_HST ON HF_HST (COD_NF, COD_FUNC, COD_PROD);
Observem que estou usando os mesmos campos para os índices das tabelas.
Vamos agora visualizar o conteúdo das tabelas e o seu gasto de processamento.


Reparem o campo Cost, este é valor de processamento da consulta da NOTAFISCAL.
Vamos fazer o mesmo para a tabela de histórico.


É bom observar que o gasto de processamento são os mesmos de uma tabela para outra.
Agora vamos fazer um select, que vai buscar as informações da nota fiscal no histórico, vou usar a concatenação de campos, reparem o gasto de processamento.

O uso da concatenação de campos, não utiliza o recurso dos índices, o que aumenta consideravelmente o tempo gasto de processamento, não quero dizer que isso esteja errado, não é isso. Só quero demonstrar que isso pode aumentar bastante o tempo de processamento das suas consultas no banco. Vale lembrar que estamos trabalhando com um volume muito pequeno de dados.
Vou colocar a consulta usando os índices, e vamos observar o tempo gasto.

Observem, que o tempo já foi menor do que a select anterior.
Fica a dica de tentarem usar ao máximo os seus índices na hora de realizar as suas queries.
Abraços.

    Deixe uma resposta

    O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

    © 2019 All Rights Reserved. Cooperati. 

    Deseja uma consultoria especializada?