GARANTIR DESCONTO

Fórum Otimizar consulta de SQL #356816

08/04/2008

0

Galera, tenho um dbgrid com todos os dados dos clientes cadastrados e um componente chamado JvDBSearchEdit que se encarrega de fazer a pesquisa quando o cliente quer procurar por um especifico.

O fato e que a tabela ja esta com 900 clientes cadastrados.

O meu cliente ligou reclamando que estava demorando mais de 4 minutos para procurar um nome.

Queria saber se alguem sabe como otimizar isso, chamando nesse caso so o que o usuario digitasse. Vi uma vez aqui no forum isso mas nao to acahndo. Me lembro que coloca algum -1 algo desse tipo.

Uso dbexpress com firebird 2.0


Jpauloss

Jpauloss

Responder

Posts

08/04/2008

Adriano_servitec

Olha, eu aqui não costumo carregar todos os clientes num dbgrid, acho isso desnecessário, pois não tem muita logica ficar com um dbgrid carregado com todos clientes sendo que a tela de um micro vc não vai enchergar todos (se tiver muitos clientes).

O que eu faço aqui no dbgrid é apenas mostrar quais os clientes ou algo que eu queira apareçer. Por exemplo usando um like posso buscar apenas parte de algum cliente ou clientes não carregando muito o dbgrid.

Bom eu aqui costumo trabalhar com o cds fechados e abrir somente quando é necessário, ou seja numa consulta por exemplo. Supondo que eu use assim um query de consulta

select ID, cliente from tabcliente 
where cliente like :pcliente
order by cliente


e no aplicativo chamar o cds assim
cds.close;
cds.params[0].asString := edtlocalizar.text+´¬´;
cds.open;


Bom como eu disse trabalho com cds fechado e abro apenas quando faço pesquisa, depois disso fecho o cds novamente.

Mais vamos ver o que o pessoal fala ai, pelo menos eu não tenho problemas com tempo longo em uma consulta, outra coisa tambem que eu tenho aqui na tabela firebird uso indices tambem.

É isso ai amigo


Responder

Gostei + 0

08/04/2008

Paulo

jpauloss, 900 registro não é nada. Se está demorando, pode ser alguma outra coisa, como o seu componente da Jedi que estás usando, ou mesmo o seu Select, mas acredito que a demora tem a ver com seu componente ou algo no cliente fora deste escopo. Seria bom você dar uma olhada melhor. Tenho aqui na empresa, tabelas com mais 1.000.000 de registro e funciona bem, claro, que deve-se considerar um tempo aí, mas numa consulta específica, não leva 4 minutos. Sua tabela é indexada? Se não, isso deve ser levado em conta, indexar os índices.


Responder

Gostei + 0

08/04/2008

Jpauloss

Olha, eu aqui não costumo carregar todos os clientes num dbgrid, acho isso desnecessário, pois não tem muita logica ficar com um dbgrid carregado com todos clientes sendo que a tela de um micro vc não vai enchergar todos (se tiver muitos clientes). O que eu faço aqui no dbgrid é apenas mostrar quais os clientes ou algo que eu queira apareçer. Por exemplo usando um like posso buscar apenas parte de algum cliente ou clientes não carregando muito o dbgrid. Bom eu aqui costumo trabalhar com o cds fechados e abrir somente quando é necessário, ou seja numa consulta por exemplo. Supondo que eu use assim um query de consulta
select ID, cliente from tabcliente 
where cliente like :pcliente
order by cliente
e no aplicativo chamar o cds assim
cds.close;
cds.params[0].asString := edtlocalizar.text+´¬´;
cds.open;
Bom como eu disse trabalho com cds fechado e abro apenas quando faço pesquisa, depois disso fecho o cds novamente. Mais vamos ver o que o pessoal fala ai, pelo menos eu não tenho problemas com tempo longo em uma consulta, outra coisa tambem que eu tenho aqui na tabela firebird uso indices tambem. É isso ai amigo


Valeu Adriano!

Perfomance melhorou 300¬


Responder

Gostei + 0

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

Aceitar