Em meus programas costumo utilizar ìndices .CDX (isso deu muito mais velocidade para minhas filtragem, eu acho). Usando, por exemplo:
SELECT 13
SET ORDER TO 1
SET FILTER TO EMPRESA = cEMPRESA .AND. NUMERO = cNUMERO
eu consigo obter a lista de registro que atendem a essas especificações em cerca de um minuto, um minuto e meio. Gostaria de obter essa lista de registros em um tempo menor. Tem algum jeito de acelerar a filtragem?
:f
Tem como fazer filtragem mais rápida?
Moderador: Moderadores
-
labaroazul
- Usuário Nível 2

- Mensagens: 83
- Registrado em: 26 Fev 2008 14:52
- Localização: São Paulo - SP
- Contato:
Tem como fazer filtragem mais rápida?
Windows XP Professional + Clipper 5.2e + Exospace + Dbase III Plus + SIX3 + NoDosImp + LXPic
"O trabalho afasta três males: o vício, a pobreza e o tédio." (Voltaire)
Site: http://www.labaroazul.xpg.com.br
Repositório: http://www.4shared.com/dir/31334106/e79 ... aring.html
"O trabalho afasta três males: o vício, a pobreza e o tédio." (Voltaire)
Site: http://www.labaroazul.xpg.com.br
Repositório: http://www.4shared.com/dir/31334106/e79 ... aring.html
A única forma de aumentar a velocidade do SET FILTER é diminuir o tamanho do banco de dados. E isso pode ser feito de duas formas: apagando registros (não é uma boa idéia) ou fazendo o sistema entender que existem menos registros que a realidade. Aí entra o SET SCOPE. Uso a biblioteca SIX e ela me dá esse recurso. Exemplo:
SET SCOPE TO cEmpresa
GO TOP
SET FILTER TO NUMER=cNUMERO
Estou considerando que a chave de índice é pela identificação da empresa. Assim, a velocidade da pesquisa aumentará consideravelmente. A não ser que o volume de registros dessa empresa seja muito alto.
SET SCOPE TO cEmpresa
GO TOP
SET FILTER TO NUMER=cNUMERO
Estou considerando que a chave de índice é pela identificação da empresa. Assim, a velocidade da pesquisa aumentará consideravelmente. A não ser que o volume de registros dessa empresa seja muito alto.
[]'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!
- ERASMO ANDRIOLI
- Usuário Nível 2

- Mensagens: 51
- Registrado em: 15 Jul 2004 16:15
- Localização: Sorriso-MT
- Contato:
Ah, sim. Criar um índice específico para isso é bem mais rápido (imagino que o OP já tivesse pensado nisso). Mas pra aproveitar um índice que já exista, e que tenha como chave a identificação da empresa, acho que o melhor caminho é o SET SCOPE.
[]'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!
- rochinha
- Administrador

- Mensagens: 4664
- Registrado em: 18 Ago 2003 20:43
- Localização: São Paulo - Brasil
- Contato:
Amiguinho
E pelo visto voce deve estar pensando em colocar o seu sistema multiempresa.
Como eu uso CDX também concordo com os post anteriores salientando que com SET nenhum arquivo visivel é criado.
Minhas dica são:
Se voce planeja montar seu sistema multi-empresa e não quer sair alterando o esquema de chaves de indexação acrescentando o codigo da empresa ao mesmo, use SET SCOPE e depois use o SET FILTER, exemplo:
Voce possui tabelas indexadas por campos DATA e produz pesquisas por PERIODO, então use o SET SCOPE sobre o indice de data trazendo os registros do periodo e depois um SET FILTER para o codigo da empresa, que poderá ser uma variavel STATIC ou PUBLIC contendo o codigo desde a abertura do sistema.
Ou altere todas as chaves de indices acrescentando o campo que contem codigo da empresa(supondo que todas suas tabelas tenham este campo na estrutura) e altere também os locais onde voce filtra usando tambem o codigo da empresa.
Usei por muito tempo o SubNTX com NTX e quando passei para CDX, não entendia muito o seu funcionamento, que basicamente era o mesmo e desde então nunca mais usei outro método.
E pelo visto voce deve estar pensando em colocar o seu sistema multiempresa.
Como eu uso CDX também concordo com os post anteriores salientando que com SET nenhum arquivo visivel é criado.
Minhas dica são:
Se voce planeja montar seu sistema multi-empresa e não quer sair alterando o esquema de chaves de indexação acrescentando o codigo da empresa ao mesmo, use SET SCOPE e depois use o SET FILTER, exemplo:
Voce possui tabelas indexadas por campos DATA e produz pesquisas por PERIODO, então use o SET SCOPE sobre o indice de data trazendo os registros do periodo e depois um SET FILTER para o codigo da empresa, que poderá ser uma variavel STATIC ou PUBLIC contendo o codigo desde a abertura do sistema.
Ou altere todas as chaves de indices acrescentando o campo que contem codigo da empresa(supondo que todas suas tabelas tenham este campo na estrutura) e altere também os locais onde voce filtra usando tambem o codigo da empresa.
Usei por muito tempo o SubNTX com NTX e quando passei para CDX, não entendia muito o seu funcionamento, que basicamente era o mesmo e desde então nunca mais usei outro método.
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.
@braços : ? )
A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
@braços : ? )
A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
