Búsqueda frente a índices secundarios

En esta página se describen las funciones de búsqueda e índices secundarios.

Cuando tengas que elegir entre índices de búsqueda e índices secundarios, ten en cuenta que los índices de búsqueda deben ser la opción predeterminada para los casos prácticos de texto completo y los índices secundarios deben ser la opción predeterminada para el resto. En la siguiente tabla se describe cuándo usar cada tipo de índice.

Función Índice secundario Índice de búsqueda
Ordenar por El índice se ordena por todas las columnas de clave de índice El índice de búsqueda solo se puede ordenar por un máximo de dos columnas INT64 controladas por el usuario
Matrices No puedes usar valores del tipo de datos de matriz como claves en índices secundarios. Los índices de búsqueda admiten la indexación de arrays. Todos los tokens de un documento se colocan en la misma división. Por lo tanto, las transacciones que cambian una fila solo escriben en una división de índice.
JSON/JSONB No puedes usar valores JSON como claves en índices secundarios. Los índices de búsqueda admiten la indexación de valores JSON.
Búsquedas La búsqueda por clave de índice solo necesita acceder a una división Las consultas que usan un índice de búsqueda suelen tener que leer todas las divisiones de una partición determinada. La única excepción es la coincidencia de patrones top-k.
Indexación de varias columnas Los índices secundarios pueden incluir varias columnas de clave. Las consultas deben buscar datos por prefijo de las columnas de clave de índice para que la ejecución sea eficiente. Los índices de búsqueda pueden indexar varias columnas. Las consultas pueden especificar expresiones lógicas complejas (conjunciones, disyunciones y negaciones) en cualquier subconjunto de las columnas indexadas y seguir ejecutándose de forma eficiente.
Intersección de índices Los usuarios pueden reescribir su consulta para combinar varios índices secundarios. La intersección de varias columnas indexadas se implementa como una unión local en zigzag eficiente, seguida de una unión de fusión distribuida (que combina los resultados de todas las divisiones pertinentes).
Leer datos Consulta de SQL o API de lectura Consulta de SQL

Además de la semántica, la sintaxis de la instrucción DDL para crear un índice de búsqueda es diferente de la sintaxis DDL para crear un índice secundario:

  • Las columnas indexadas se definen por separado del orden de clasificación en el índice de búsqueda.
  • El orden de las columnas TOKENLIST en la cláusula ON de la instrucción CREATE SEARCH INDEX no es importante.

Siguientes pasos