Aprender  /  Guías

Los índices secundarios de Snowflake explicados: CREATE INDEX, índices de cobertura y cuándo usarlos

Por primera vez, las tablas estándar de Snowflake pueden tener índices. Qué hacen, cómo crear uno y cuándo superan al clustering y a search optimization.

Guía8 min de lecturaActualizado el 28 de octubre de 2026
SnowflakeSQLBases de datos
Todas las guías y chuletas

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.

GADisponibilidad generaldesde el 26 de octubre de 2026
1Índice por tabla en cada escaneolos índices nunca se combinan
3Formas de acelerar filtrosíndices, search optimization, clustering

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.

Una búsqueda con índice secundario
ConsultaWHERE customer_id = 42
Búsqueda en el índiceencuentra los valores
Podadeja solo las particiones que los contienen
Respuestadesde el índice o con un escaneo pequeño

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.

SQL
-- 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:

SQL
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 secundarioSearch optimizationClustering automático
Ideal paraIgualdades, rangos y listas INIgualdades en columnas de alta cardinalidad, búsquedas de texto y geoespacialesRangos sobre las columnas por las que está ordenada la tabla
ClavesColumnas y expresiones deterministasColumnasColumnas y expresiones
Responde sin leer la tablaSí, si cubre la consultaNoEs la propia tabla la que se reorganiza
Se factura comoSearch optimizationSearch optimizationClustering automático
  1. 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. 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. 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. 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:

SQL
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?

2/3¿Qué tipo de tabla no puede tener un índice secundario?

3/3¿Cómo se factura el mantenimiento de los índices?

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.

Alessandro Ecclesie AgazziEscrito por Alessandro Ecclesie Agazzi, analytics engineer en Londres. Actualizado el 28 de octubre de 2026. Sobre mí

¿Te ha resultado útil?

Aquí se publican con regularidad nuevas guías y artículos sobre las novedades en datos e IA. Sígueme en LinkedIn o comparte este artículo con un compañero.