Página 1 de 2
Indices temporários, duvidas
Enviado: 02 Dez 2015 16:46
por asimoes
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
Indices temporários, duvidas
Enviado: 02 Dez 2015 19:05
por ANDRIL
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+
Indices temporários, duvidas
Enviado: 02 Dez 2015 21:16
por asimoes
Andril,
No meu caso é CDX agora um temporário em memória é um CDX ?
Continuo querendo saber TEMPORARY X MEMORY qual a diferença?
Indices temporários, duvidas
Enviado: 02 Dez 2015 21:23
por asimoes
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?
Indices temporários, duvidas
Enviado: 02 Dez 2015 22:05
por ANDRIL
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?
Indices temporários, duvidas
Enviado: 02 Dez 2015 22:08
por asimoes
Andril,
Esse teste eu fiz com harbour 3.4, tanto faz TEMPORARY OU MEMORY o PPO não mostra diferenças.
Indices temporários, duvidas
Enviado: 03 Dez 2015 13:47
por lugab
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
Indices temporários, duvidas
Enviado: 03 Dez 2015 13:50
por asimoes
Lugab,
Se você não especificar TEMPORARY OU MEMORY vai ser criado o indice fisico CDX ou NTX
Indices temporários, duvidas
Enviado: 03 Dez 2015 18:12
por lugab
Valeu, Asimoes.
Pra mim "MEMORY" é novidade. Uma ótima novidade aliás, pq dispensa o acesso a disco rígido e acelera o processo
Obrigado
Indices temporários, duvidas
Enviado: 04 Dez 2015 20:34
por lugab
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 ?
Indices temporários, duvidas
Enviado: 04 Dez 2015 20:49
por asimoes
DbCloseArea() ou DbCloseAll() já libera o indice da memória.
Indices temporários, duvidas
Enviado: 04 Dez 2015 22:35
por Toledo
Só para complementar, se for necessário fechar o índice temporário sem ter que fechar o DBF, pode-se usar:
Abraços,
Indices temporários, duvidas
Enviado: 05 Dez 2015 21:14
por lugab
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
Indices temporários, duvidas
Enviado: 17 Set 2016 23:59
por lugab
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")
Código: Selecionar todos
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(????)
Indices temporários, duvidas
Enviado: 18 Set 2016 10:05
por JoséQuintas
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.
Código: Selecionar todos
#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