é.. no caso do SEEK acaba envolvendo deletado, pra pular se estiver SET DELETED ON.
Mas até isso pode causar problemas.
Um teste simples:
Pegue um arquivo o maior que puder.
Delete tudo sem usar o PACK, menos alguns registros no final.
Depois rode este programa simples:
Código: Selecionar todos
SET DELETED ON
FOR nCont = 1 TO 10
USE ( Arquivo )
USE
NEXT
marque o tempo com registros deletados e sem registros deletados.
Vai ver a diferença.
A demora é por estar pulando registros deletados.
Em rede então... parece ter travado tudo...
Melhor ainda....
Depois faça a mesma coisa com tudo deletado, menos o PRIMEIRO registro.
Neste caso o USE continuará instantâneo.
Motivo: não precisa pular nada no use.
Nota: lembrando que local pode ser rápido, mas em rede não. a velocidade do HD + cache é muitas vezes mais rápida do que pela rede, por isso só vai dar pra perceber diferença visível se a quantidade for muitas vezes maior do que pela rede. Por isso o teste local precisa ser com arquivo muito maior.
Nota2:
Antigamente eu pensava assim: se o HD lê 3GB/segundo, e a rede é 100MB, então local é 30 vezes mais rápido que a rede.
Mas não é. Local tem o cache. E pela rede, tem os blocos de comunicação que trafegam pouco. talvez na prática seja 1.000 vezes mais rápido ler um dbf sequencial. E se repetir o teste, vai ser mais rápido na segunda vez, por causa do cache local.
Por isso esse teste tem que ser com milhares de registros se for local, ou talvez 1 milhão.