AJUDA PESQUISA SQL/DBGRID
Olá amigos !
Estou com problema para consulta de produtos em um determinado cliente (50 mil produtos cadastrados), uso uma função em sql e mostro em um dbgrid. Está muito lento, a cada letra que digito demora para atualizar. Gostaria de saber como posso deixar mais dinamica, alterando função, forma de fazer, grid, etc.
ExpSql = [Ô]Select Produtos.[Produto Longo] & Space(7) & Produtos.[Nome Marca], Produtos.[Código de Barras], Produtos.[Preço de Venda], Produtos.[Preço a Prazo], Produtos.[Estoque Atual], Produtos.[Código do Produto] from Produtos where Comercializado = False AND [Ô]
ExpSql = ExpSql & [Ô][Produto Longo] Like [ô]*[Ô] & TxtPesquisa.Text & [Ô]*[ô][Ô]
TProdutos.RecordSource = ExpSql
TProdutos.Refresh
Estou com problema para consulta de produtos em um determinado cliente (50 mil produtos cadastrados), uso uma função em sql e mostro em um dbgrid. Está muito lento, a cada letra que digito demora para atualizar. Gostaria de saber como posso deixar mais dinamica, alterando função, forma de fazer, grid, etc.
ExpSql = [Ô]Select Produtos.[Produto Longo] & Space(7) & Produtos.[Nome Marca], Produtos.[Código de Barras], Produtos.[Preço de Venda], Produtos.[Preço a Prazo], Produtos.[Estoque Atual], Produtos.[Código do Produto] from Produtos where Comercializado = False AND [Ô]
ExpSql = ExpSql & [Ô][Produto Longo] Like [ô]*[Ô] & TxtPesquisa.Text & [Ô]*[ô][Ô]
TProdutos.RecordSource = ExpSql
TProdutos.Refresh
Pra ficar mais rápido é uma coisa meio complicada, pois são muitos registros, porém você pode estar criando Ãndices na tabela para que fique mais rápido.
Exemplo sua busca esta sendo pelo nome do campo [Produto Longo] crie um Ãndice para essa coluna que talvez resolva um pouco
outra forma é estipular mais filtro para chegar em uma buscar mais rapida
Espero ter ajudado
Exemplo sua busca esta sendo pelo nome do campo [Produto Longo] crie um Ãndice para essa coluna que talvez resolva um pouco
outra forma é estipular mais filtro para chegar em uma buscar mais rapida
Espero ter ajudado
Olá amigo !
Já possuo Ãndice na tabela e ainda sim está bem lenta, ao ponto de dar uma congelada na tela. Grato pela ajuda.
Já possuo Ãndice na tabela e ainda sim está bem lenta, ao ponto de dar uma congelada na tela. Grato pela ajuda.
huber, vc quer melhorar mais ainda?
pensa em criar uma view;
[ô]--------------------------------------
Select Produtos.[Produto Longo] & Space(7) & Produtos.[Nome Marca], Produtos.[Código de Barras], Produtos.[Preço de Venda], Produtos.[Preço a Prazo], Produtos.[Estoque Atual], Produtos.[Código do Produto] from Produtos where Comercializado = False
[ô]-------------------------------
e depois tu coloca os parametros da consulta que tu quiser;
ah eu ja passei por isto tb e a melhora é visivel
pensa em criar uma view;
[ô]--------------------------------------
Select Produtos.[Produto Longo] & Space(7) & Produtos.[Nome Marca], Produtos.[Código de Barras], Produtos.[Preço de Venda], Produtos.[Preço a Prazo], Produtos.[Estoque Atual], Produtos.[Código do Produto] from Produtos where Comercializado = False
[ô]-------------------------------
e depois tu coloca os parametros da consulta que tu quiser;
ah eu ja passei por isto tb e a melhora é visivel
Usandoooooooooooooooooo o que.
50 mil, pouco.
Não deixe o pessoal imaginar.
50 mil, pouco.
Não deixe o pessoal imaginar.
Talvez usando a cláusula TOP, para trazer apenas os primeiros X registros:
ExpSql = [Ô]Select TOP 100 Produtos.[Produto Longo] & Space(7) & Produtos.[Nome Marca], Produtos
ExpSql = [Ô]Select TOP 100 Produtos.[Produto Longo] & Space(7) & Produtos.[Nome Marca], Produtos
Amigos fazendo alguns testes verifiquei que a demora significativa sempre é na primeira consulta, após a primeira as demais são mais rápidas. estou louco ?? rsrs ... pelo o banco estar na rede pode ser que o acess aloca localmente alguma coisa que a deixa mais rápida após a primeira execução ?? também notei que com o banco localmente não tenho essa demora significativa, ok o banco está na rede mais a placa é /1000.
Tópico encerrado , respostas não são mais permitidas