dbf muito grande
Moderador: Moderadores
-
José Luiz
- Usuário Nível 1

- Mensagens: 18
- Registrado em: 15 Mar 2008 17:19
- Localização: São Carlos - SP
dbf muito grande
Meu programa em clipper 5.2 está com o dbf muito grande (mais de 10.000 registros) e se tornou muito lenta suas pesquisas. O que posso fazer para solucionar a lentidão do sistema ? (Pentium 4 - 2.4 ghz - 250 mb - windows xp).
- Pablo César
- Usuário Nível 7

- Mensagens: 5312
- Registrado em: 31 Mai 2006 10:22
- Localização: Curitiba - Paraná
Re: dbf muito grande
Seja bem vindo ao nosso fórum, José Luiz.
Sabe que o uso do comando LOCATE, deixam muito lento as pesquisas mesmo. Se for o caso, troque pelo uso do comando SEEK, claro que terá que criar arquivo de índices. Outra forma de armazenamento, caso permitir, pode aramazenar os dados de acordo o MES e ANO. Tudo dependerá da disponibilidade dos dados, do quê trata os seus dados ?.José Luiz escreveu:(mais de 10.000 registros) e se tornou muito lenta suas pesquisas.
Realmente o uso do SET FILTER, deixam extremamente lentos em todos os casos em que o volume dos dados são grandes. Mas ~deve também estudar a possibilidade de manter os índices criados e não criar a toda hora. Claro que tudo depende da demanda de uso de casos esporádicos.relação a filtro( não uso o Set filter) uso muito indice temporário
Um clip-abraço !
Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
- Luciano Bonfim
- Usuário Nível 3

- Mensagens: 414
- Registrado em: 23 Ago 2007 09:34
- Localização: Rio de Janeiro / São Paulo
- Contato:
Caro José Luiz,
quantos campos e qual o tamanho total de cada registro tem no seu DBF "gigante"?
Muito Obrigado
quantos campos e qual o tamanho total de cada registro tem no seu DBF "gigante"?
Muito Obrigado
Muito Obrigado,
Luciano Bonfim de Azevedo
www.bonfim.com.br
luciano@bonfim.com.br
www.linkedin.com/in/lucianobonfim
Skype : lucianobonfim
Luciano Bonfim de Azevedo
www.bonfim.com.br
luciano@bonfim.com.br
www.linkedin.com/in/lucianobonfim
Skype : lucianobonfim
-
José Luiz
- Usuário Nível 1

- Mensagens: 18
- Registrado em: 15 Mar 2008 17:19
- Localização: São Carlos - SP
O meu sistema
Trata-se de um sistema em clipper que desenvolvi em 2002 para o Cartório que trabalho para registro de adolescentes infratores. São 12 dbfs no total. O mais pesquisado é o "bmenor.dbf" com a seguinte estrutura: vmenor - character - 50, vpai - 30, vmae - 30, etc... no total 14 campos mais ou menos nesses tamanhos, com mais de 10.000 registros cada dbf. Uma das pesquisas é pelo nome do menor e está escrita assim:
select 1
if netuse ("bmenor",.f.,3)
index on vmenor to imenor3
seek dmenor
else
close all
endif
if eof()
seek left(dmenor,3)
else
close all
endif
Após, o programa abre o dbedit para pesquisar todas as ocorrências que o menor tiver.
Estou voltando agora a mexer no programa por causa desse problema. Estou por fora das novidades, mas adoro clipper. Desculpa se meu problema é muito simples. Obrigado a todos.
select 1
if netuse ("bmenor",.f.,3)
index on vmenor to imenor3
seek dmenor
else
close all
endif
if eof()
seek left(dmenor,3)
else
close all
endif
Após, o programa abre o dbedit para pesquisar todas as ocorrências que o menor tiver.
Estou voltando agora a mexer no programa por causa desse problema. Estou por fora das novidades, mas adoro clipper. Desculpa se meu problema é muito simples. Obrigado a todos.
- Luciano Bonfim
- Usuário Nível 3

- Mensagens: 414
- Registrado em: 23 Ago 2007 09:34
- Localização: Rio de Janeiro / São Paulo
- Contato:
amigo, pelo que entendi do seu c'digo vc está indexando o DBF toda hora que vai fazer um seek.
indexa apenas uma vez e depois basta abrir o NTX dando um set index e pode dar o seek... vai ficar rápido...
indexa apenas uma vez e depois basta abrir o NTX dando um set index e pode dar o seek... vai ficar rápido...
Muito Obrigado,
Luciano Bonfim de Azevedo
www.bonfim.com.br
luciano@bonfim.com.br
www.linkedin.com/in/lucianobonfim
Skype : lucianobonfim
Luciano Bonfim de Azevedo
www.bonfim.com.br
luciano@bonfim.com.br
www.linkedin.com/in/lucianobonfim
Skype : lucianobonfim
Uma forma de tornar qualquer pesquisa mais eficiente é trocar o NTX pelo índice composto NSX ou CDX. A biblioteca SIX é uma boa pedida. Até o SET FILTER fica instantâneo. 
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
- Luciano Bonfim
- Usuário Nível 3

- Mensagens: 414
- Registrado em: 23 Ago 2007 09:34
- Localização: Rio de Janeiro / São Paulo
- Contato:
o índice para estar atualizado basta ser aberto junto com o DBF, näo precisa ficar recriando ele a todo momento...
if adir("*.ntx")=0
use arquivoDBF
index on campo to indice
close data
endif
select 0
use arquivoDBF alias arquivoDBF
set index to indice
quando vc quiser reindexar bata deletar os NTXs da sua pasta do sistemas, ele estando aberto as atualizaçöes feitas pelos usuários säö atualizadas no DBF e nos Indices
if adir("*.ntx")=0
use arquivoDBF
index on campo to indice
close data
endif
select 0
use arquivoDBF alias arquivoDBF
set index to indice
quando vc quiser reindexar bata deletar os NTXs da sua pasta do sistemas, ele estando aberto as atualizaçöes feitas pelos usuários säö atualizadas no DBF e nos Indices
Muito Obrigado,
Luciano Bonfim de Azevedo
www.bonfim.com.br
luciano@bonfim.com.br
www.linkedin.com/in/lucianobonfim
Skype : lucianobonfim
Luciano Bonfim de Azevedo
www.bonfim.com.br
luciano@bonfim.com.br
www.linkedin.com/in/lucianobonfim
Skype : lucianobonfim
- Pablo César
- Usuário Nível 7

- Mensagens: 5312
- Registrado em: 31 Mai 2006 10:22
- Localização: Curitiba - Paraná
Re: Resposta
Por isso mesmo que deve ser aberto o DBF junto com o arquivo indice, como ja disse o nosso colega Luciano. Mais do que mudar de NTX para CDX, é você verificar se o arquivo de índice existe, daí é só abrir como por exemplo:José Luiz escreveu:...está em rede...// o índice tem que estar sempre atualizado
Código: Selecionar todos
USE DBF SHARE
IF FILE("ARQ_INDICE.NTX")
SET INDEX TO ARQ_INDICE
ELSE
INDEX ON CAMPO TO ARQ_INDICE
ENDIFUm clip-abraço !
Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Acho muito melhor continuar com a versão 5.2 do Clipper e só adicionar a biblioteca SIX que, dizem, tem muitos recursos que a versão 5.3 do Clipper (nunca usei) não tem. Além do quê, as alterações são mínimas.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
- Pablo César
- Usuário Nível 7

- Mensagens: 5312
- Registrado em: 31 Mai 2006 10:22
- Localização: Curitiba - Paraná
Por quê SIX e não CDX ? O CDX não funciona em 5.2 ?. Eu ainda não mudei o meu RDD (ainda trabalho com NTX) e estou ainda muito conforme, porém reconheço que o RDD que trabalha com TAG, isto é a idéia de criar apenas um arquivo que sriva para vários ORDERs iria ser mais benéfico, sem contar com outros recursos.Maligno escreveu:Acho muito melhor continuar com a versão 5.2 do Clipper e só adicionar a biblioteca SIX
Um clip-abraço !
Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Já li comentários de que o CDX da versão 5.2 do Clipper é problemático. Pelo sim, pelo não, prefiro a SIX, que além de tudo, oferece vários recursos que o Clipper não tem.
Se você analisar bem, verá que o fato do índice ser composto não é o que há de mais importante, embora seja de grande valor. Na minha opinião, o aspecto mais atraente é o fato do índice ser compactado e ser feito com um algoritmo que torna possível o uso de recursos que com o RDD convencional não é possível.
Se você analisar bem, verá que o fato do índice ser composto não é o que há de mais importante, embora seja de grande valor. Na minha opinião, o aspecto mais atraente é o fato do índice ser compactado e ser feito com um algoritmo que torna possível o uso de recursos que com o RDD convencional não é possível.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!

