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

SQL

Query

IndexedDB

14/09/2023

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

Curtidas 0

Respostas

Arthur Heinrich

Arthur Heinrich

14/09/2023

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).
GOSTEI 0
Charles

Charles

14/09/2023

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.
GOSTEI 0
Emerson Nascimento

Emerson Nascimento

14/09/2023

qual o banco de dados?

qual o comando utilizado para criar o índice?

GOSTEI 0
POSTAR