Clipper On Line • Ver Tópico - Indices temporários, duvidas

Indices temporários, duvidas

Projeto Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

 

Indices temporários, duvidas

Mensagempor asimoes » 02 Dez 2015 15:46

Pessoal,

Alguém saberia me dizer qual é a diferença entre TEMPORARY E MEMORY :

ex.: INDEX ON CHAVE TAG CHAVE MEMORY

ou INDEX ON CHAVE TAG CHAVE TEMPORARY
â–ºHarbour 3.x | Minigui xx-x | HwGuiâ—„
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4919
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 341 vezes
Mens.Curtidas: 258 vezes

Indices temporários, duvidas

Mensagempor ANDRIL » 02 Dez 2015 18:05

Qual tipo de RDD esta usando? Eu usei o TEMPORARY com NTX e notei um ganho significante. Usei com CDX e não notei o mesmo ganho. Não sei se é aceita em qualquer RDD esta clausula.
Quando tentei usar o MEMORY deu erro.

Notei que ao usar o TEMPORARY, é criado um "resultado" a parte, ou seja, no DBF eu tinha 2 indices e abertos SET INDEX TO ind1,ind2 ao criar o temporario, nao consigo manter os 2 abertos, fica somente ele, o que ocasiona problema de atualização dos indices em caso de manipular o resultado fazendo alguma alteração nos dados e salvando.

Acho que fiz algo errado, mais foi esse resultado que obtive, tanto que desativei e voltei a usar o arquivo temporário físico, onde add ele no SET INDEX TO ind1, ind2, tmp1 para refletir as alterações em todos.
Ate+
Avatar de usuário

ANDRIL
Usuário Nível 5

Usuário Nível 5
 
Mensagens: 1270
Data de registro: 06 Jul 2004 00:44
Curtiu: 12 vezes
Mens.Curtidas: 46 vezes

Indices temporários, duvidas

Mensagempor asimoes » 02 Dez 2015 20:16

Andril,

No meu caso é CDX agora um temporário em memória é um CDX ?

Continuo querendo saber TEMPORARY X MEMORY qual a diferença?
â–ºHarbour 3.x | Minigui xx-x | HwGuiâ—„
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4919
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 341 vezes
Mens.Curtidas: 258 vezes

Indices temporários, duvidas

Mensagempor asimoes » 02 Dez 2015 20:23

Compilando com -p para gerar o ppo

USE APM05 ALIAS APM05 NEW SHARED
INDEX ON ID_E_BCO TAG ID_E_BCO1 TEMPORARY
INDEX ON ID_E_BCO TAG ID_E_BCO2 MEMORY

PPO:
dbUseArea( .T.,, "APM05", "APM05", iif( .T. .OR. .F., ! .F., NIL ), .F. )
ordCondSet(,,,,,, RecNo(),,,,,,,,,,, .T.,, ) ; ordCreate(, "ID_E_BCO1", "ID_E_BCO", {|| ID_E_BCO}, ) // USANDO TEMPORARY
ordCondSet(,,,,,, RecNo(),,,,,,,,,,, .T.,, ) ; ordCreate(, "ID_E_BCO2", "ID_E_BCO", {|| ID_E_BCO}, ) // USANDO MEMORY

Alguma diferença?
â–ºHarbour 3.x | Minigui xx-x | HwGuiâ—„
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4919
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 341 vezes
Mens.Curtidas: 258 vezes

Indices temporários, duvidas

Mensagempor ANDRIL » 02 Dez 2015 21:05

Não vejo nenhuma diferença no seu PPO. Vendo o help do xHarbour embora eu utilize no momento Harbour 3.2, no comando INDEX não tem a clausula MEMORY e sim TEMPORARY, creio que a MEMORY faça parte de algum .CH de algum RDD.
Esta usando algum .CH para CDX?
Clipper 5.2e / Blinker 5.1 / Harbour 3.2 / GTwvg
Avatar de usuário

ANDRIL
Usuário Nível 5

Usuário Nível 5
 
Mensagens: 1270
Data de registro: 06 Jul 2004 00:44
Curtiu: 12 vezes
Mens.Curtidas: 46 vezes

Indices temporários, duvidas

Mensagempor asimoes » 02 Dez 2015 21:08

Andril,

Esse teste eu fiz com harbour 3.4, tanto faz TEMPORARY OU MEMORY o PPO não mostra diferenças.
â–ºHarbour 3.x | Minigui xx-x | HwGuiâ—„
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4919
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 341 vezes
Mens.Curtidas: 258 vezes

Indices temporários, duvidas

Mensagempor lugab » 03 Dez 2015 12:47

Boa tarde, povo.

Leigamente falando, existe alguma vantagem em usar a cláusula MEMORY ou deixar de usá-la ??

Ou seja, qual vantagem há em usar INDEX ON CHAVE TAG CHAVE MEMORY em vez de simplesmente INDEX ON CHAVE TAG CHAVE ???

Grato
lugab
lugab
Colaborador

Colaborador
 
Mensagens: 843
Data de registro: 19 Mai 2009 15:58
Curtiu: 126 vezes
Mens.Curtidas: 38 vezes

Indices temporários, duvidas

Mensagempor asimoes » 03 Dez 2015 12:50

Lugab,

Se você não especificar TEMPORARY OU MEMORY vai ser criado o indice fisico CDX ou NTX
â–ºHarbour 3.x | Minigui xx-x | HwGuiâ—„
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4919
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 341 vezes
Mens.Curtidas: 258 vezes

Indices temporários, duvidas

Mensagempor lugab » 03 Dez 2015 17:12

Valeu, Asimoes.

Pra mim "MEMORY" é novidade. Uma ótima novidade aliás, pq dispensa o acesso a disco rígido e acelera o processo

Obrigado
lugab
lugab
Colaborador

Colaborador
 
Mensagens: 843
Data de registro: 19 Mai 2009 15:58
Curtiu: 126 vezes
Mens.Curtidas: 38 vezes

Indices temporários, duvidas

Mensagempor lugab » 04 Dez 2015 19:34

Boa noite a todos...

Surgiu uma dúvida:

Ao finalizar o programa é necessário executar algum comando específico sobre o arquivo de índices gerado em memória,
para informar ao Windows que a área de memória que ele ocupou está livre para ser usada por outro aplicativo ou um Simples CLOSE DATA já faz isso ?
lugab
lugab
Colaborador

Colaborador
 
Mensagens: 843
Data de registro: 19 Mai 2009 15:58
Curtiu: 126 vezes
Mens.Curtidas: 38 vezes

Indices temporários, duvidas

Mensagempor asimoes » 04 Dez 2015 19:49

DbCloseArea() ou DbCloseAll() já libera o indice da memória.
â–ºHarbour 3.x | Minigui xx-x | HwGuiâ—„
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4919
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 341 vezes
Mens.Curtidas: 258 vezes

Indices temporários, duvidas

Mensagempor Toledo » 04 Dez 2015 21:35

Só para complementar, se for necessário fechar o índice temporário sem ter que fechar o DBF, pode-se usar:

OrdDestroy( "nome_do_arquico_temporario" )


Abraços,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
Avatar de usuário

Toledo
Administrador

Administrador
 
Mensagens: 3038
Data de registro: 22 Jul 2003 18:39
Cidade/Estado: Araçatuba - SP
Curtiu: 263 vezes
Mens.Curtidas: 258 vezes

Indices temporários, duvidas

Mensagempor lugab » 05 Dez 2015 20:14

Pessoal, muito obrigado por tanta assistência...

Coloquei o paramêtro MEMORY e , realmente, o desempenho ficou excepcional

Parabéns e muito obrigado a todos
lugab
lugab
Colaborador

Colaborador
 
Mensagens: 843
Data de registro: 19 Mai 2009 15:58
Curtiu: 126 vezes
Mens.Curtidas: 38 vezes

Indices temporários, duvidas

Mensagempor lugab » 17 Set 2016 23:59

Olá Pessoal,

Que sintaxe devo usar em "set index to" e "Orsdsetfocus" qndo há 2 ou mais índices temporários, como no exemplo a seguir ?
(qdo há apenas 1 nem precisa citar o "Set index to", nem o "Ordsetfocus")

sele 200
use  c:\Temp\saldflu exclusive alias Temp
zap
index on str(numcli,6) tag saldfluN Temporary
index on valor         tag saldfluV Temporary
Set index to ????
....
....
Sele Temp
Ordsetfocus(????)
lugab
lugab
Colaborador

Colaborador
 
Mensagens: 843
Data de registro: 19 Mai 2009 15:58
Curtiu: 126 vezes
Mens.Curtidas: 38 vezes

Indices temporários, duvidas

Mensagempor JoséQuintas » 18 Set 2016 10:05

O que geralmente se esquece é que arquivo temporário em rede é terrível.
Eu uso a pasta temporária do Windows, que não tem problema de acesso, e caso esqueça de apagar, tá no lugar certo.... rs
Como é arquivo local, é na velocidade do HD.

Quanto à outra questão, parece que são sinônimos.

#command INDEX ON <key> [TAG <(tag)>] TO <(bag)> ;
               [FOR <for>] [WHILE <while>] [NEXT <next>] ;
               [RECORD <rec>] [<rest:REST>] [<all:ALL>] ;
               [EVAL <eval>] [EVERY <every>] [<unique: UNIQUE>] ;
               [<ascend: ASCENDING>] [<descend: DESCENDING>] ;
               [<add: ADDITIVE>] [<cur: USECURRENT>] [<cust: CUSTOM>] ;
               [<noopt: NOOPTIMIZE>] [<mem: MEMORY, TEMPORARY>] ;
               [<filter: USEFILTER>] [<ex: EXCLUSIVE>] => ;
         ordCondSet( <"for">, <{for}>, [<.all.>], <{while}>, ;
                     <{eval}>, <every>, RecNo(), <next>, <rec>, ;
                     [<.rest.>], [<.descend.>],, ;
                     [<.add.>], [<.cur.>], [<.cust.>], [<.noopt.>], ;
                     <"while">, [<.mem.>], [<.filter.>], [<.ex.>] ) ;;
         ordCreate( <(bag)>, <(tag)>, <"key">, <{key}>, [<.unique.>] )


Nota: se não me engano, de nada adianta acrescentar a cláusula se não adicionar referência no fonte, e a LIB
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18014
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Próximo



Retornar para Harbour

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 8 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro