Query só fica rápida somente após recriar o índice

14/09/2023

0

Boa noite, será que alguém consegue me ajudar com o caso abaixo?

Tenho uma query que quando executada demora aproximadamente 15 segundos.

Quando eu recrio o indice, a mesma query passa a levar 1 segundo.

O Problema é que a cada novo registro inserido na tabela a query volta a apresentar lentidão e só fica rápida se novamente o índice for recriado.
Charles

Charles

Responder

Posts

15/09/2023

Arthur Heinrich

Este não é o comportamento natural de um banco de dados.

Uma coisa que pode estar ocorrendo é que, ao recriar o índice, o banco faz um full scan na tabela e a armazena em cache. Uma query executada a seguir, provavelmente vai encontrar todos os dados em memória, executando mais rapidamente.

Passado algum tempo, outras queries do banco vão invalidando o cache e, ao executar a query novamente, precisará acessar blocos em disco, tornando a execução mais lenta.

Sua query também pode estar com plano de acesso incorreto, ou dependa de muitos dados.

Enfim, não parece ser um problema de banco (SGBD), mas de modelagem (Aplicação).
Responder

26/09/2023

Charles

Este não é o comportamento natural de um banco de dados.

Uma coisa que pode estar ocorrendo é que, ao recriar o índice, o banco faz um full scan na tabela e a armazena em cache. Uma query executada a seguir, provavelmente vai encontrar todos os dados em memória, executando mais rapidamente.

Passado algum tempo, outras queries do banco vão invalidando o cache e, ao executar a query novamente, precisará acessar blocos em disco, tornando a execução mais lenta.

Sua query também pode estar com plano de acesso incorreto, ou dependa de muitos dados.

Enfim, não parece ser um problema de banco (SGBD), mas de modelagem (Aplicação).


O estranho é que mesmo reiniciando a instancia do banco de dados as consultas nos registros existentes antes do rebuild do indice ficam rápidas e somente as consultas aos registros inseridos após o rebuild ficam lentas.
Responder

05/10/2023

Emerson Nascimento

qual o banco de dados?

qual o comando utilizado para criar o índice?

Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar