1. Se possível, alterar rotinas de abrir índices
Aqui eu uso uma AbreArquivos( { "arquivo1", "arquivo2", ... } )
Essa rotina já abre DBF e seus respectivos índices.
No meu caso, tenho uma lista no sistema com DBFs e respectivos arquivos de índices
Pode usar o sistema normalmente durante/depois disso.
Temporários não precisa mexer.
Isto vai facilitar quando mudar pra usar CDX pra valer
2. Esta parte tem que ser de uma vez:
alterar extensão de NTX pra CDX
Vai precisar uma parada no sistema pra reindexar.
Pode usar o sistema normalmente depois disso.
Por enquanto a vantagem vai ser índices menores, e possibilidade de usar chave de indexação maior
Convém desligar a abertura automática de CDX, e fazer somente manual.
Alterar If .NOT. FILE( "arquivo.ntx" ) pra IF .NOT. File( "arquivo.cdx" )
3. Acrescentar tag na indexação
INDEX ON codigo TAG ("clientec") TO clientc
Pronto, continua tudo igual, e os índices passaram a ter TAG, que é a referência pra CDX
Nos temporários não é obrigatório isso.
Pode usar o sistema normalmente durante/depois disso.
Assim que puder, parar o sistema e reindexar.
4. Alterar os SET INDEX e/ou SET ORDER usados pra alterar a ordem dos índices
Pra mudar a ordem, ao invés de SET ORDER TO 2, ou SET INDEX TO clientenome
passar a usar OrdSetFocus( "clientenome" )
Pode usar o sistema normalmente durante/depois disso.
Temporários não precisa mexer.
A abertura de índices é sempre de todos, e só usa ordsetfcus() pra ordem.
Se fez a etapa 1, facilita pra não alterar em cada fonte.
USE clientes
SET INDEX TO clientecodigo,clientenome
OrdSetFocus( "clientecodigo" )
5. Alterar pra aquivo único.
Precisa alterar a indexação, que não precisa mais nome de arquivo CDX
INDEX ON codigo TAG clientecod
INDEX ON nome TAG clientenome
E alterar as aberturas de índice, que se usou a etapa 1 fica mais fácil.
USE clientes
SET INDEX TO clientes
OrdSetFocus( "clientecodigo" )
Após esta etapa, parar o sistema pra reindexar.
E é isso.
É bom pra sistemas grandes, pra ir fazendo por etapas.
antes:
clientes.dbf
cliente_codigo.ntx
cliente_nome.ntx
cliente_cnpj.ntx
cliente_endereco.ntx
depois:
clientes.dbf
clientes.cdx
Vantagens:
- Índices menores
- Melhor controle sobre atualização de índices, porque todos estão sempre abertos e sendo atualizados
- Neste exemplo, de 5 arquivos abertos passaram a ser 2, o que reduz o total de arquivos abertos e pode evitar DOS ERROR 4
O limite de índices em um CDX são 50, o que é muito, mas se precisar de mais ainda, só criar mais arquivos CDX.