sábado, 8 de outubro de 2011

Introdução


Existem muitas formas de se criar um determinado programa, porém a forma escolhida pode ser o céu ou o inferno para muitos procedimentos. O exemplo mais fácil de entender pode ser visto analisando uma simples consulta para contar a quantidade de registros de uma tabela.

Podemos separar duas formas de consulta.

forma 1:
select count(*) from tabela;

forma 2:
select count(1) from tabela;

A segunda consulta é muito mais rápida que a primeira pois o banco não precisa recuperar todas as informações da tabela em disco. Quando a tabela analisada é pequena essa diferença de tempo pode não ser percebida, mas em tabelas grandes essa diferença pode causar grandes problemas.

Com um conhecimento mais avançado de banco de dados, dependendo da situação, podemos conseguir essa informação de uma forma muito mais rápida.

Imaginem que as consultas acima levem mais que 4 horas para informar a quantidade de registros de uma tabela muito grande e você precisa dessa informação o mais breve possivel. Sabendo que no seu banco de dados é executado um analyze da tabela de tempos em tempos, que pode ser diariamente, ou semanalmente, ou mensalmente, com a simples consulta abaixo você obtem a quantidade de registros aproximada da tabela, que pode já atender as suas necessidades, de uma forma quase que instantanea.

select num_rows, last_analyzed
from all_tables
where table_name like 'TABELA';

O num_rows é a quantidade de registros que existiam na tabela quando o ultimo analyze foi executado, cuja dia e hora é armazenado na coluna last_analyzed.

Meu objetivo aqui no blog é trazer dicas e técnicas que permitem resolver problema de performance, como também problemas do dia a dia dos projetos de banco de dados.

Espero que tenham gostado e em breve estarei postando outras dicas.

Tragam seus problemas que tentaremos encontrar uma solução...

Patrocinado por Taisoft Consultoria em Informática

2 comentários:

  1. Amigo, esse 1 é o nome da tabela ou é realmente um 1?

    vlw.

    ResponderExcluir
  2. É o valor 1 mesmo! Isso faz com que o SGBD não necessite buscar os campos da tabela.

    ResponderExcluir