Saltar para o conteúdo principal
Versão: Próximo

SET INDEX

SET INDEX ( campo : Field ; indice : Boolean, Integer {; *} )

ParâmetroTipoDescrição
campoField→campo para o qual criar ou apagar o índice
indiceBoolean, Integer→True = criar índice, False = apagar índice, ou
Criar um índice do tipo: -1 = palavras chaves, 0 = por padrão, 1 = B-Tree padrão, 3 = B-Tree cluster, 4 = Cosine, 5 = Dot, 6 = Euclidean
*Operator→Índice assincrônico se * for passado
Histórico
VersãoAlterações
21 R5Suporte para índices vetoriais Cosine, Dot, Euclidean
11 SQLModificado
<6Criado

Nota de compatibilidade​

SET INDEX, apesar de ser um comando herdado, ainda é compatível e pode permanecer em sua aplicação, não é necessário voltar a escrever o código existente. Entretanto, é melhor usar CREATE INDEX y DELETE INDEX para administrar os índices porque oferecem mais funcionalidades.

Descrição​

O comando SET INDEX aceita duas sintaxes:

  • Se passa um booleano no parâmetro índice, o comando cria ou apaga o índice de campo.
  • Se passa um inteiro no parâmetro índice, o comando cria um índice do tipo especificado.

índice = Booleano
Para indexar o campo, passe True em índice. O comando cria um índice do tipo "por padrão". Se o índice já existir, o comando não faz nada.
Se passar False em índice, o comando apagará todos os índices (não-compostos e não-palavras-chaves) associados ao campo. Se o índice não existir, o comando não faz nada.

índice = Inteiro
Nesse caso, o comando cria um índice do tipo especificado por Campo. Pode passar uma das seguintes constantes, que são encontradas no tema “Tipo de Índice” :

ConstanteTipoValorComentário
Cluster BTree IndexInteiro longo3Índice do tipo B-Tree usando clusters. Este tipo de índice é otimizado quando o índice contém poucas palavras-chave, ou seja, quando os mesmos valores ocorrem frequentemente nos dados.
Default Index TypeInteiro longo0O 4D especifica o tipo de índice (excluindo índices de palavras-chave) que é o mais otimizado de acordo com o conteúdo do campo.
Keywords IndexInteiro longo-1Permite indexação palavra por palavra do conteúdo do campo. Este tipo de índice só pode ser usado com campos do tipo Texto ou Alfa.
Standard BTree IndexInteiro longo1Índice padrão do tipo B-Tree. Este tipo de índice multiuso é usado em versões anteriores do 4D
Vector cosine indexInteiro longo4Índice otimizado para consultas de IA usando cosine similarity
Vector dot indexInteiro longo5Índice otimizado para consultas de IA usando dot similarity
Vector euclidean indexInteiro longo6Índice otimizado para consultas de IA usando euclidean distance
nota

Um índice B-Tree associado a um campo de tipo texto armazena como máximo os primeiros 1024 caracteres do campo. Portanto, nesse contexto, as pesquisas nas strings que contenham mais de 1024 caracteres falharão.

SET INDEX não indexará registros bloqueados; o comando esperará que o registro seja desbloqueado.

O parâmetro opcional * indica uma indexação asincrônica (simultânea). Uma indexação assincrônica permite ao método chamante continuar sua execução imediatamente depois da chamada, não importa se a indexação tenha terminado ou não. Entretanto, a execução será interrompida se um comando requerer a indexação.

Notas:

  • Os índices criados por este comando não têm nomes. Não podem ser apagados pelo comando DELETE INDEX utilizando a sintaxe baseada no nome.
  • Este comando não permite criar ou apagar índices compostos.
  • Este comando não permite apagar um índice de palavras chaves criado pelo comando CREATE INDEX

Nota para lançamento​

Dado que este comando modifica a estrutura do banco de dados, não pode ser utilizado no contexto de uma aplicação empacotada de apenas leitura (arquivo .4dc instalado na pasta Arquivos de programa ou arquivo .4dz).

Exemplo 1​

O exemplo abaixo indexa o campo [Clientes]ID:

 UNLOAD RECORD([Clientes])
 SET INDEX([Clientes]ID;True)

Exemplo 2​

Suponha que queira indexar o campo [Clientes]Nome em modo assincrônico:

 SET INDEX([Clientes]Nome;True;*)

Exemplo 3​

O exemplo abaixo indexa o campo [Books]Summary:

 SET INDEX([Books]Summary;Keywords Index)

Ver também​

CREATE INDEX
DELETE INDEX
GET FIELD PROPERTIES
ORDER BY
QUERY

Propriedades​

Número do comando344
Thread-seguroyes