> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-trino-dialect.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

> Documentación para gestionar índices de omisión de datos

# Gestión de índices de omisión de datos

Las siguientes operaciones están disponibles:

<div id="add-index">
  ## ADD INDEX
</div>

`ALTER TABLE [db.]table_name [ON CLUSTER cluster] ADD INDEX [IF NOT EXISTS] name expression TYPE type [GRANULARITY value] [FIRST|AFTER name]` - Agrega la definición del índice a los metadatos de la tabla.

<div id="drop-index">
  ## DROP INDEX
</div>

`ALTER TABLE [db.]table_name [ON CLUSTER cluster] DROP INDEX [IF EXISTS] name` - Elimina la definición del índice de los metadatos de las tablas y borra los archivos de índice del disco. Se implementa como una [mutación](/es/reference/statements/alter/index#mutations).

<div id="materialize-index">
  ## MATERIALIZE INDEX
</div>

`ALTER TABLE [db.]table_name [ON CLUSTER cluster] MATERIALIZE INDEX [IF EXISTS] name [IN PARTITION partition_name]` - Reconstruye el índice secundario `name` para la `partition_name` especificada. Se implementa como una [mutación](/es/reference/statements/alter/index#mutations). Si se omite la cláusula `IN PARTITION`, reconstruye el índice para todos los datos de la tabla.

[`MATERIALIZE COLUMN`](/es/reference/statements/alter/column#materialize-column) no sustituye por completo a `MATERIALIZE INDEX`. En las partes que son simultáneamente **wide + Full**, puede reescribir los valores de las columnas sin actualizar los archivos **independientes** de índices de omisión (o índices de texto). Los índices de omisión convencionales almacenados en `skp_idx.packed` constituyen una excepción: todavía pueden recalcularse de forma forzada en partes wide + Full (substreams pequeños de índices de omisión por debajo del valor predeterminado de [`packed_skip_index_max_bytes`](/es/reference/settings/merge-tree-settings/other#packed_skip_index_max_bytes); los índices de texto completo no se empaquetan de este modo). En **cualquier parte que no sea wide + Full** (incluidas **compact + Full**, **compact + packed** y **wide + packed**), una reescritura completa de la parte puede recalcular los índices ya existentes; las partes pequeñas suelen ser compact y, aun así, usan almacenamiento de partes Full de forma predeterminada. Use `MATERIALIZE INDEX` como vía **determinista e inmediata** cuando se haya añadido un índice a una tabla que ya contiene datos (`ADD INDEX` solo de metadatos), y después de reescribir columnas en partes wide+Full si necesita reconstruir de inmediato los archivos de índices independientes. Los índices añadidos recientemente (incluidos los índices de texto) en partes históricas también pueden materializarse durante una combinación posterior cuando [`materialize_skip_indexes_on_merge`](/es/reference/settings/merge-tree-settings/materialize#materialize_skip_indexes_on_merge) está habilitado y el índice no se excluye mediante [`exclude_materialize_skip_indexes_on_merge`](/es/reference/settings/merge-tree-settings/exclude#exclude_materialize_skip_indexes_on_merge); de lo contrario, permanecen sin materializar hasta que se ejecute explícitamente `MATERIALIZE INDEX`.

<div id="clear-index">
  ## CLEAR INDEX
</div>

`ALTER TABLE [db.]table_name [ON CLUSTER cluster] CLEAR INDEX [IF EXISTS] name [IN PARTITION partition_name]` - Elimina del disco los archivos de índices secundarios sin eliminar su definición. Se implementa como una [mutación](/es/reference/statements/alter/index#mutations).

Los comandos `ADD`, `DROP` y `CLEAR` son operaciones ligeras, en el sentido de que solo modifican metadatos o eliminan archivos.
Además, se replican y sincronizan los metadatos de los índices mediante ClickHouse Keeper o ZooKeeper.

<Note>
  La manipulación de índices solo se admite en tablas con motor [`*MergeTree`](/es/reference/engines/table-engines/mergetree-family/mergetree) (incluidas las variantes [replicated](/es/reference/engines/table-engines/mergetree-family/replication)).
</Note>

<div id="concurrent-alter-and-multi-clause-materialize-index">
  ## `ALTER` concurrente y `MATERIALIZE INDEX` con varias cláusulas
</div>

En tablas replicadas, varios `ALTER` independientes ejecutados rápidamente sobre una misma tabla pueden generar `CANNOT_ASSIGN_ALTER` (código 517) cuando los `ALTER` anteriores aún no se han aplicado en la réplica (los metadatos siguen desactualizados; esto puede seguir siendo así aunque ya se haya asignado un alter anterior). Esta es una condición general de concurrencia entre `ALTER` de metadatos y mutaciones (no exclusiva de las mutaciones); serialice o reintente las operaciones, espere a los alters anteriores que generan mutaciones mediante [`mutations_sync`](/es/reference/settings/session-settings/mutations#mutations_sync) / `is_done` en [`system.mutations`](/es/reference/system-tables/mutations), o combine operaciones de metadatos independientes en un único `ALTER` con varias cláusulas cuando la gramática lo permita. Consulte [Sincronía de las consultas ALTER](/es/reference/statements/alter/index#synchronicity-of-alter-queries) y [Asignación concurrente de ALTER](/es/reference/statements/alter/index#concurrent-alter-assignment-on-one-table).

Varias cláusulas `MATERIALIZE INDEX` pueden incluirse en un mismo `ALTER`. El caso cubierto en el árbol consiste en agrupar varias cláusulas `ADD INDEX` junto con `MATERIALIZE INDEX` para esos mismos índices nuevos en una única sentencia (`tests/queries/0_stateless/02911_add_index_and_materialize_index.sql`). Esta forma agrupada es para bases de datos ordinarias (no `DatabaseReplicated`); `DatabaseReplicated` rechaza segmentos mixtos de `ADD INDEX` + `MATERIALIZE INDEX` con `QUERY_IS_PROHIBITED`. Las formas con varias cláusulas que solo materializan índices ya existentes siguen la misma ruta de preparación basada en una instantánea de metadatos en la implementación actual, pero esa configuración exacta aún no está cubierta por una prueba específica sin estado; considérela comportamiento de la implementación actual, no un contrato garantizado por separado, hasta que exista dicha cobertura. Para una aplicación ordenada, ejecute un `MATERIALIZE INDEX` por sentencia y espere con [`mutations_sync`](/es/reference/settings/session-settings/mutations#mutations_sync).
