Índices de pesquisa vs. secundários

Esta página descreve as funcionalidades de pesquisa e índices secundários.

Ao decidir entre índices de pesquisa e índices secundários, tenha em atenção que os índices de pesquisa devem ser a escolha predefinida para exemplos de utilização de texto completo e os índices secundários devem ser a opção predefinida para tudo o resto. A tabela seguinte descreve quando usar cada tipo de índice.

Funcionalidade Índice secundário Índice de pesquisa
Ordenação O índice é ordenado por todas as colunas de chaves de índice O índice de pesquisa só pode ser ordenado por, no máximo, duas colunas INT64 controladas pelo utilizador
Matrizes Não pode usar valores do tipo de dados de matrizes como chaves em índices secundários. Os índices de pesquisa suportam a indexação de matrizes. Todos os tokens de um documento estão localizados na mesma divisão. Como resultado, as transações que alteram apenas 1 linha escrevem apenas numa divisão do índice.
JSON/JSONB Não pode usar valores JSON como chaves em índices secundários. Os índices de pesquisa suportam a indexação de valores JSON.
Pesquisas A pesquisa por chave de índice só precisa de aceder a uma divisão As consultas que usam o índice de pesquisa geralmente precisam de ler todas as divisões de uma determinada partição. A única exceção é a correspondência de padrões top-k.
Indexação de várias colunas Os índices secundários podem incluir várias colunas de chaves. As consultas têm de procurar dados pelo prefixo das colunas de chaves de índice para uma execução eficiente. Os índices de pesquisa podem indexar várias colunas. As consultas podem especificar expressões lógicas complexas (conjunções, disjunções, negações) em qualquer subconjunto das colunas indexadas e continuar a ser executadas de forma eficiente
Interseção de índices Os utilizadores podem reescrever a respetiva consulta para juntar vários índices secundários. A interseção de várias colunas indexadas é implementada como uma junção em ziguezague local eficiente, seguida de uma união de intercalação distribuída (que combina os resultados de todas as divisões relevantes).
Dados de leitura Consulta SQL ou API Read Consulta SQL

Além da semântica, a sintaxe da declaração DDL para criar um índice de pesquisa é diferente da sintaxe DDL para criar um índice secundário:

  • As colunas indexadas são definidas separadamente da ordem de ordenação no índice de pesquisa.
  • A ordem das colunas TOKENLIST na cláusula ON da declaração CREATE SEARCH INDEX é irrelevante.

O que se segue?