Aprenda PL/SQL

Tabela com 300 milhões de registros

Tuning de Banco, Tuning de SQL, Ferramentas de tuning
  

Mensagemem Qua, 27 Abr 2016 5:41 pm

Boa Tarde Pessoal.

Tenho uma tabela com mais de 300 milhões de registros e existe uma consulta que utiliza essa tabela para gerar um relatório. O problema é que esta consulta está demorando muito e consumindo muito recursos do BD. Já tentei realizar algumas alternativas de tuning nesta consulta mas não consegui melhora-la. Estou sem alternativas, vocês teriam alguma dica neste caso? Será que particionar esta tabela seria uma solução?

Desde já agradeço.
dejambo

Mensagemem Sex, 06 Mai 2016 10:22 am

Uma solução quando a tabela for grande, você pode particionar a tabela,
caso houver um campo com data, ano por exemplo você pode particionar por ano.
nor.dbajunior
Localização: cuiaba

Mensagemem Ter, 10 Mai 2016 1:13 pm

Exatamente.
Outra forma é fazer o uso eficiente dos NULLs.
Lembre-se que campos NULL não são inseridos nos índices.

Um exemplo do que eu estou falando:
Digamos que você quer recuperar todos as linhas ainda não processadas de uma tabela. (tabela com 2 bilhões de linhas, e as linhas que você quer recuperar são 200 ou 300).
Neste caso, você cria um campo STATUS e deixa este campo NULL quando o registro já foi processado.
E deixa 'P' para os registro que você quer processar. Daí, basta criar um índice nesse campo.
OU seja, como os NULLS não vão entrar no índice, essa consulta vai ser super rápida, pois no índice vão ter apenas 200 linhas. Exatamente as que você precisa, e não serã necessário varrer um índice GIGANTE de 2 bilhões de linhas, nem fazer FULL SCAN).
dr_gori
Localização: Porto Alegre - RS

Thomas F. G
https://www.patreon.com/glufke



Voltar para DBA Tuning

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante