Otimizar consulta de SQL
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
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
Curtidas 0
Respostas
Adriano_servitec
08/04/2008
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
e no aplicativo chamar o cds assim
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
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
GOSTEI 0
Paulo
08/04/2008
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.
GOSTEI 0
Jpauloss
08/04/2008
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
e no aplicativo chamar o cds assim
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
select ID, cliente from tabcliente where cliente like :pcliente order by cliente
cds.close; cds.params[0].asString := edtlocalizar.text+´¬´; cds.open;
Valeu Adriano!
Perfomance melhorou 300¬
GOSTEI 0