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áusulaON
da declaraçãoCREATE SEARCH INDEX
é irrelevante.
O que se segue?
- Saiba mais sobre os índices de pesquisa.
- Saiba mais sobre os índices secundários.