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áusulaON
de la instrucciónCREATE SEARCH INDEX
no es importante.
Siguientes pasos
- Consulta información sobre los índices de búsqueda.
- Consulta información sobre los índices secundarios.