Compartilhar via


Comando INDEX

Cria um arquivo de índice para exibir e acessar registros de tabela em uma ordem lógica.

Sintaxe

  
INDEX ON eExpression TO IDXFileName | TAG TagName [OF CDXFileName]  
   [FOR lExpression]  
   [COMPACT]  
   [ASCENDING | DESCENDING]  
   [UNIQUE | CANDIDATE]  
   [ADDITIVE]  

Argumentos

eExpression
Especifica uma expressão de índice que pode incluir o nome de um campo ou campos da tabela atual. Uma chave de índice com base na expressão de índice é criada no arquivo de índice para cada registro na tabela. O Visual FoxPro usa essas chaves para exibir e acessar registros na tabela.

Observação

Embora não seja recomendado, eExpression também pode ser uma variável de memória, um elemento de matriz ou uma expressão de campo ou campo de uma tabela em outra área de trabalho. Os campos de memorando não podem ser usados sozinhos em expressões de arquivo de índice; eles devem ser combinados com outras expressões de caractere. Se você acessar um índice que contém uma variável ou campo que não existe mais ou não pode ser localizado, o Visual FoxPro gerará uma mensagem de erro.

Se você tentar criar um índice com uma chave que varia de comprimento, a chave será preenchida com espaços. Não há suporte para chaves de índice de comprimento variável no Visual FoxPro.

É possível criar uma chave de índice com comprimento zero. Por exemplo, uma chave de índice de comprimento zero é criada quando a expressão de índice é uma subcadeia de caracteres de um campo de memorando vazio. Uma chave de índice de comprimento zero gera uma mensagem de erro. Quando o Visual FoxPro cria um índice, ele avalia os campos no primeiro registro da tabela. Se um campo estiver vazio, talvez seja necessário inserir alguns dados temporários no campo no primeiro registro para evitar uma chave de índice de 0 comprimento.

TO IDXFileName
Cria um arquivo de índice .idx. O arquivo de índice recebe a extensão padrão .idx.

TAG TagName[OF CDXFileName]
Cria um arquivo de índice composto. Um arquivo de índice composto é um único arquivo de índice que consiste em qualquer número de marcas separadas (entradas de índice). Cada marca é identificada por seu nome de marca exclusivo. Os nomes de marca devem começar com uma letra ou um sublinhado e podem consistir em qualquer combinação de até 10 letras, dígitos ou sublinhados. O número de marcas em um arquivo de índice composto é limitado apenas pela memória disponível e pelo espaço em disco.

Os arquivos de índice composto de várias entradas são sempre compactos. Não é necessário incluir COMPACT ao criar um arquivo de índice composto. Os nomes dos arquivos de índice composto recebem uma extensão .cdx.

Dois tipos de arquivos de índice composto podem ser criados: estruturais e não estruturais.

Arquivos de índice composto estrutural Você pode criar um arquivo de índice composto estrutural com TAG TagName excluindo a cláusula opcional OF CDXFileName . Um arquivo de índice composto estrutural sempre tem o mesmo nome base que a tabela e é aberto automaticamente quando a tabela é aberta.

Arquivos de índice composto não estruturais Você pode criar um arquivo de índice composto nãotructural incluindo OF CDXFileName após TAG TagName. Ao contrário de um arquivo de índice composto estrutural, um arquivo de índice composto não estrutural deve ser aberto explicitamente com a cláusula INDEX em USE.

Se um arquivo de índice composto já tiver sido criado e aberto, a emissão de INDEX com TAG TagName adicionará uma marca ao arquivo de índice composto.

FOR lExpression
Especifica uma condição pela qual apenas os registros que atendem à expressão de filtro lExpression estão disponíveis para exibição e acesso; as chaves de índice são criadas no arquivo de índice apenas para os registros que correspondem à expressão de filtro.

A tecnologia Rushmore do Visual FoxPro otimiza um ÍNDICE... Comando FOR lExpression se lExpression for uma expressão otimizada. Para obter o melhor desempenho, use uma expressão otimizada na cláusula FOR.

COMPACT
Cria um arquivo .idx compacto.

CRESCENTE
Especifica uma ordem crescente para o arquivo .cdx. Por padrão, as marcas .cdx são criadas em ordem crescente. (Você pode incluir ASCENDING como um lembrete da ordem do arquivo de índice.) Uma tabela pode ser indexada em ordem inversa, incluindo DESCENDING.

DESCENDENTE
Especifica uma ordem decrescente para o arquivo .cdx. Você não pode incluir DESCENDING ao criar arquivos de índice .idx.

UNIQUE
Especifica que apenas o primeiro registro encontrado com um valor de chave de índice específico está incluído em um arquivo .idx ou uma marca .cdx. UNIQUE pode ser usado para impedir a exibição ou o acesso a registros duplicados. Todos os registros adicionados com chaves de índice duplicadas são excluídos do arquivo de índice. Usar a opção UNIQUE de INDEX é idêntico à execução de SET UNIQUE ON antes de emitir INDEX ou REINDEX.

Quando um índice UNIQUE ou marca de índice está ativo e um registro duplicado é alterado de uma maneira que altera sua chave de índice, a marca de índice ou índice é atualizada. No entanto, o próximo registro duplicado com a chave de índice original não pode ser acessado ou exibido até que você reindexe o arquivo usando REINDEX.

CANDIDATO
Cria uma marca de índice estrutural candidata. O palavra-chave CANDIDATE só pode ser incluído ao criar uma marca de índice estrutural; caso contrário, o Visual FoxPro gera uma mensagem de erro.

Uma marca de índice candidata impede valores duplicados no campo ou combinação de campos especificados na expressão de índice eExpression. O termo candidato refere-se ao tipo de índice; como os índices candidatos impedem valores duplicados, eles se qualificam como um "candidato" para ser um índice primário.

O Visual FoxPro gerará um erro se você criar uma marca de índice candidata para um campo ou combinação de campos que já contenham valores duplicados.

ADITIVO
Mantém abertos todos os arquivos de índice abertos anteriormente. Se você omitir a cláusula ADDITIVE ao criar um arquivo de índice ou arquivos para uma tabela com INDEX, todos os arquivos de índice abertos anteriormente (exceto o índice composto estrutural) serão fechados.

Comentários

Os registros em uma tabela que tem um arquivo de índice são exibidos e acessados na ordem especificada pela expressão de índice. A ordem física dos registros na tabela não é alterada por um arquivo de índice.

Tipos de índice

O Visual FoxPro permite criar dois tipos de arquivos de índice:

  • Arquivos de índice .cdx compostos que contêm várias entradas de índice chamadas marcas

  • Arquivos de índice .idx que contêm uma entrada de índice

Você também pode criar um arquivo de índice composto estrutural, que é aberto automaticamente com a tabela .

Observação

Como os arquivos de índice composto estrutural são abertos automaticamente quando a tabela é aberta, eles são o tipo de índice preferencial.

Inclua COMPACT para criar arquivos de índice .idx compactos. Os arquivos de índice composto são sempre compactos.

Ordem de índice e atualização

Apenas um arquivo de índice (o arquivo de índice master) ou a marca (a marca master) controla a ordem na qual a tabela é exibida ou acessada. Determinados comandos (SEEK, por exemplo) usam o arquivo de índice master ou a marca para pesquisar registros. No entanto, todos os arquivos de índice .idx e .cdx abertos são atualizados à medida que as alterações são feitas na tabela.

Funções definidas pelo usuário

Embora uma expressão de índice possa conter uma função definida pelo usuário, você não deve usar funções definidas pelo usuário em uma expressão de índice. As funções definidas pelo usuário em uma expressão de índice aumentam o tempo necessário para criar ou atualizar o índice. Além disso, as atualizações de índice podem não ocorrer quando uma função definida pelo usuário é usada para uma expressão de índice.

Se você usar uma função definida pelo usuário em uma expressão de índice, o Visual FoxPro deverá ser capaz de localizar a função definida pelo usuário. Quando o Visual FoxPro cria um índice, a expressão de índice é salva no arquivo de índice, mas apenas uma referência à função definida pelo usuário é incluída na expressão de índice.

Consulte Também

ALTER TABLE – comando SQL
Comando DELETE TAG
Comando SET COLLATE
Comando SET UNIQUE