Fórum Programa demora abrir por causa de muitos registros na tabela.Ajuda #377292

10/05/2010

0

Ola!

Estou abrindo o clientdataset clientes no oncreate do meu datamodule com a seguinte instrucao sql :

SELECT * FROM CLIENTES WHERE ATIVO = 'S'

So que eu tenho uns 16.000 registros no meu banco e isso ta levando mais ou menos 2 minutos pro meu programa abrir. Eu tenho um dbgrid onde eu mostro todos os clientes dando a opcao do usuario escolher qual ele quer cadastrar uma receita.

Tem uma opcao melhor(claro q deve ter ne) pra q meu programa nao demore tanto?


obrigado
Eduardo Jr

Eduardo Jr

Responder

Posts

10/05/2010

Emerson Nascimento

utilize a propriedade PacketRecords. ele limita o pacote de registros lidos por vez.
por exemplo: se você alterar a propriedade para 200 e query retornar 15.000 registros, serão trazidos em princípio 200 registros. ao navegar na grade e posicionar no registro 201, serão trazidos mais 200, e assim por diante.

Responder

Gostei + 0

10/05/2010

Fábio Cruz

Outra dica é remover essa instrução do OnCreate
Responder

Gostei + 0

10/05/2010

Eduardo Jr

Ola!
 
Eu mudei pra 200 essa propriedade agora ele mostra minha tela de splash por 3 segundos depois some tudo e demora pra abrir o programa. Antes ele ficava na tela de splash ate abrir o programa.

Ainda ta demorando muito.

obrigado
Responder

Gostei + 0

10/05/2010

Emerson Nascimento

talvez você tenha algum comando que varra a tabela, ou que precise ir até o último registro.... ou ainda pode haver outro cds com o mesmo problema. só com o código fonte em mãos pra dizer exatamente o que pode ser....
Responder

Gostei + 0

11/05/2010

Wilson Junior

Se você ainda não "utiliza" esta tabela para mostrar dados para o cliente e quer simplesmente abrí-la, faça o SQL retornar nenhum registro.

SELECT * FROM NOME_TABELA WHERE CampoIndice = -1


Espero ter colaborado.
Responder

Gostei + 0

12/05/2010

Carlos Mazzi

Além de tirar do OnCreate, recomendaria que vc, no seu SELECT, que com * from (trazer todos os campos na consulta) se sua tabela tiver 30 campos.. isso tbm, causará lentidão e as vezes não'serão todos os campos que faz sentido mostrar na sua grid ou consulta... tente filtrar mais ... Ex:   "SELECT CLI_CODIGO, CLINOME, CLI_RG from Clientes where ....." , filtrando vc tbm limita mais....usando menos recurso do seu servidor de dados...   Outra dica é criar Indices para consultas, por exemplo .. se vc usar muitas consultas por nome, crie um indice de codigo e nome de cliente, para consultar seus clientes por nome... e assim por diante...   Se ainda nao estiver resolverndo.. da um tok..   Abracos
Responder

Gostei + 0

12/05/2010

Eduardo Jr

Ola!

Obrigado a todos. Eu consegui resolver o problema mudando o select * para select e o nome dos campos q eu quero no agora ta rapidinho.


obrigado mais uma vez.
Responder

Gostei + 0

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

Aceitar