DATA Type Correto para Melhor Performance em Consultas SQL

Pessoal,

Boa tarde.

Quero demonstrar no artigo de hoje a importância de utilizar o tipo ou atributo de dados -(data type) correto nas consultas SQL, evitando deixar para o Oracle a conversão do mesmo. Isso pode diminuir consideravelmente no tempo de processamento da consulta.


Em grandes empresas, infelizmente ainda é comum encontrar desenvolvedores que não se preocupam se os valores que estão sendo repassados como parâmetros, correspondem ao tipo de dados da coluna da tabela. Isso até pode não resultar em erro na execução da query, mas, se falando de performance, não se importar com essa questão é uma péssima prática.

Como malefícios podemos citar alguns como:

  •          Demora no tempo de resposta da consulta;
  •          Lock de objetos por mais tempo quando utilizado em comandos DML(Isso em ambiente OLTP pode ser muito perigoso);
  •  Alteração do plano de execução da query, perdendo possíveis benefícios do otimizador. 

Vamos a um exemplo: Temos uma tabela com informações de cartões, com aproximadamente 3 milhões de registros conforme imagem abaixo: 


Nesta tabela existe a coluna COD_BOUND_TOKEN que é VARCHAR2 conforme imagem abaixo:


Pelo plano de execução atual, um full table scan será realizado com um custo demasiadamente alto. Veja abaixo:



Já para o tempo de execução, foram necessários 51 scs.


O interessante, é que nesta tabela existe um index criado para a coluna em questão, que foi ignorado, pois, passamos valores literais como number ao invés do tipo de dados correto da coluna que é varchar2. Isso não só inviabilizou o index como alterou o plano de execução e o tempo de processamento.

Agora veja o plano passando valores literais como varchar2, veja o custo reduzido e a utilização do index agora:


Veja agora no tempo de processamento, praticamente instantâneo:


Abraço,
Ronaldo.

Nenhum comentário:

Postar um comentário