Durante casi toda su historia, Snowflake no tuvo índices en las tablas normales. En su lugar se apoyaba en las microparticiones: pequeños bloques de una tabla con el valor mínimo y máximo de cada columna registrado, para que una consulta se salte los bloques que no pueden contener las filas buscadas. Funciona de maravilla para grandes consultas analíticas, y peor cuando quieres unas pocas filas por ID de cliente. El 26 de octubre de 2026, los índices secundarios pasaron a disponibilidad general para tablas estándar. Esta guía explica qué son, cómo crear uno y cuándo merece la pena pagarlos.
Cómo funciona un índice secundario
Un índice secundario relaciona los valores de sus columnas clave con las microparticiones que los contienen. Cuando una consulta filtra por esas columnas, Snowflake busca en el índice las particiones que coinciden y lee solo esas. Si todas las columnas que necesita la consulta están en el índice, Snowflake puede responder solo con el índice. Snowflake construye y mantiene el índice automáticamente cuando cambian los datos.
Crea tu primer índice
La sintaxis te resultará familiar si has usado PostgreSQL o SQL Server. Primero van las columnas clave, por orden de importancia, e INCLUDE añade columnas que se guardan en el índice pero no se usan como clave de búsqueda principal.
-- Speed up lookups by customer and date, and cover the columns the app reads
CREATE INDEX idx_orders_customer
ON orders (customer_id, order_date)
INCLUDE (status, amount);
-- Queries like this can now skip most of the table
SELECT order_date, status, amount
FROM orders
WHERE customer_id = 42
AND order_date >= '2026-10-01';
-- List and remove indexes
SHOW INDEXES IN TABLE orders;
DROP INDEX orders.idx_orders_customer;Las claves también pueden ser expresiones deterministas, como un cast o una columna en minúsculas. Escribe los filtros con la misma expresión para que el optimizador la reconozca:
CREATE INDEX idx_customers_email ON customers (LOWER(email));
SELECT customer_id, name
FROM customers
WHERE LOWER(email) = 'ana@example.com';- Expresiones clave
- Una lista ordenada de columnas o expresiones deterministas. Pon primero la columna por la que más filtras, porque las primeras claves podan mejor.
- INCLUDE
- Columnas extra guardadas en el índice. Ayudan menos a filtrar, pero permiten que el índice devuelva resultados por sí solo.
- Índice de cobertura
- Un índice con todas las columnas que necesita una consulta, de modo que no se lee la tabla base.
- Cambiar un índice
- No existe ALTER INDEX. Usa CREATE OR REPLACE INDEX, o elimínalo y vuelve a crearlo.
¿Índice, search optimization o clustering?
Snowflake tiene ahora tres formas de acelerar los filtros. Se solapan, así que conviene saber para qué sirve cada una.
| Índice secundario | Search optimization | Clustering automático | |
|---|---|---|---|
| Ideal para | Igualdades, rangos y listas IN | Igualdades en columnas de alta cardinalidad, búsquedas de texto y geoespaciales | Rangos sobre las columnas por las que está ordenada la tabla |
| Claves | Columnas y expresiones deterministas | Columnas | Columnas y expresiones |
| Responde sin leer la tabla | Sí, si cubre la consulta | No | Es la propia tabla la que se reorganiza |
| Se factura como | Search optimization | Search optimization | Clustering automático |
- 1
Empieza con clustering para el acceso principal
Si casi todas las consultas filtran por fecha, haz clustering de la tabla por fecha. Una sola clave de clustering cubre el patrón más común.
- 2
Añade un índice para el segundo acceso
Cuando una app, una API o un agente de IA también busca filas por ID de cliente, pedido o dispositivo, un índice en esa columna evita reorganizar toda la tabla.
- 3
Usa search optimization para texto y muchas columnas
Búsquedas de subcadenas, filtros geoespaciales y filtros de igualdad puntuales en muchas columnas siguen siendo su terreno.
- 4
Prueba con consultas reales
Compara el tiempo y las particiones leídas en el query profile antes y después, y quédate con el índice solo si compensa.
Los límites que debes conocer antes de empezar
Funciona con
Compatible- Tablas estándar de Snowflake, con varios índices por tabla
- Filtros de igualdad, desigualdad, rango y listas IN
- Expresiones escalares deterministas, casts incluidos
Pensado para búsquedas selectivas en tablas grandes.
No funciona con
No compatible- Tablas Apache Iceberg, vistas y vistas materializadas
- Consultas que usan Time Travel
- Tablas o columnas con políticas de acceso a filas, enmascaramiento, agregación o privacidad
- Replicación, por ahora
El optimizador usa como mucho un índice por tabla en una consulta, y puede ignorarlo.
Costes y permisos
Para crear un índice necesitas la OWNERSHIP de la tabla y el privilegio ADD SEARCH OPTIMIZATION sobre su esquema. Solo el rol propietario de la tabla puede eliminarlo. Los créditos de mantenimiento aparecen en el historial de search optimization, donde los índices secundarios tienen su propia etiqueta:
GRANT ADD SEARCH OPTIMIZATION ON SCHEMA sales.public TO ROLE app_owner;
-- Credits spent maintaining secondary indexes in the last 30 days
SELECT table_name, SUM(credits_used) AS credits
FROM snowflake.account_usage.search_optimization_history
WHERE index_type = 'Secondary Index'
AND start_time >= DATEADD(day, -30, CURRENT_TIMESTAMP())
GROUP BY table_name
ORDER BY credits DESC;Las tablas que cambian sin parar cuestan más de indexar, porque cada cambio debe reflejarse en el índice. Los índices rinden más en tablas grandes, leídas a menudo con consultas selectivas y actualizadas por lotes.
Pon a prueba lo que has aprendido
1/3¿Qué añade INCLUDE a un índice secundario de Snowflake?
Las columnas incluidas hacen que el índice sea «de cobertura», así que puede no leerse la tabla base.
2/3¿Qué tipo de tabla no puede tener un índice secundario?
No se admiten tablas Iceberg, vistas ni vistas materializadas.
3/3¿Cómo se factura el mantenimiento de los índices?
Busca el tipo Secondary Index en el historial de search optimization para seguir el coste.
Has acertado 0 de 3.
Más sobre Snowflake: la actualización de Snowflake de octubre de 2026, las novedades de las plataformas de datos de esta semana, la chuleta de Snowflake y Snowflake frente a Databricks para agentes de IA. ¿Empiezas con Snowflake? Lee Primeros pasos con Snowflake.
Fuentes: la nota de versión de Snowflake «Secondary indexes (General availability)» (26 de octubre de 2026) y la documentación de Snowflake sobre índices secundarios, CREATE INDEX y search optimization. Las funciones llegan por región y edición; comprueba la disponibilidad en tu cuenta.
