Lernen  /  Leitfäden

Sekundärindizes in Snowflake erklärt: CREATE INDEX, abdeckende Indizes und wann sie sich lohnen

Zum ersten Mal können normale Snowflake-Tabellen Indizes haben. Was sie leisten, wie Sie einen anlegen und wann sie Clustering und Search Optimization schlagen.

Leitfaden8 Min. LesezeitAktualisiert am 28 Oktober 2026
SnowflakeSQLDatenbanken
Alle Leitfäden und Spickzettel

Die meiste Zeit hatte Snowflake keine Indizes auf normalen Tabellen. Stattdessen setzte es auf Micro-Partitionen: kleine Tabellenblöcke, für die der kleinste und größte Wert jeder Spalte gespeichert ist, sodass eine Abfrage Blöcke überspringen kann, die die gesuchten Zeilen nicht enthalten können. Für große Analyseabfragen funktioniert das hervorragend, weniger gut, wenn Sie ein paar Zeilen zu einer Kunden-ID brauchen. Am 26. Oktober 2026 wurden Sekundärindizes für Standardtabellen allgemein verfügbar. Dieser Leitfaden erklärt, was sie sind, wie Sie einen anlegen und wann sie ihr Geld wert sind.

GAAllgemein verfügbarseit dem 26. Oktober 2026
1Index pro Tabelle und ScanIndizes werden nie kombiniert
3Wege zu schnelleren FilternIndizes, Search Optimization, Clustering

So funktioniert ein Sekundärindex

Ein Sekundärindex ordnet die Werte seiner Schlüsselspalten den Micro-Partitionen zu, die sie enthalten. Filtert eine Abfrage auf diese Spalten, sucht Snowflake die passenden Partitionen im Index und liest nur diese. Stehen alle Spalten, die die Abfrage braucht, im Index, kann Snowflake allein aus dem Index antworten. Snowflake baut und pflegt den Index automatisch, wenn sich Daten ändern.

Eine Abfrage mit Sekundärindex
AbfrageWHERE customer_id = 42
Indexsuchepassende Werte finden
Pruningnur Partitionen mit diesen Werten
Antwortaus dem Index oder einem kleinen Scan

Den ersten Index anlegen

Die Syntax kommt Ihnen bekannt vor, wenn Sie PostgreSQL oder SQL Server kennen. Zuerst stehen die Schlüsselspalten, nach Wichtigkeit geordnet, und INCLUDE fügt Spalten hinzu, die im Index gespeichert, aber nicht als Hauptsuchschlüssel verwendet werden.

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;

Schlüssel können auch deterministische Ausdrücke sein, etwa ein Cast oder eine Spalte in Kleinbuchstaben. Schreiben Sie Ihre Filter mit demselben Ausdruck, damit der Optimizer ihn erkennt:

SQL
CREATE INDEX idx_customers_email ON customers (LOWER(email));

SELECT customer_id, name
FROM customers
WHERE LOWER(email) = 'ana@example.com';
Schlüsselausdrücke
Eine geordnete Liste von Spalten oder deterministischen Ausdrücken. Setzen Sie die am häufigsten gefilterte Spalte an den Anfang, denn frühe Schlüssel filtern wirksamer.
INCLUDE
Zusätzliche Spalten im Index. Sie helfen weniger beim Filtern, erlauben dem Index aber, Ergebnisse allein zu liefern.
Abdeckender Index
Ein Index mit allen Spalten, die eine Abfrage braucht, sodass die Basistabelle nicht gelesen wird.
Index ändern
Es gibt kein ALTER INDEX. Nutzen Sie CREATE OR REPLACE INDEX oder löschen Sie den Index und legen ihn neu an.

Index, Search Optimization oder Clustering?

Snowflake hat jetzt drei Wege, Filter schneller zu machen. Sie überschneiden sich, deshalb hilft es zu wissen, wofür jeder gedacht ist.

SekundärindexSearch OptimizationAutomatisches Clustering
Am besten fürGleichheit, Bereiche und IN-ListenGleichheit auf Spalten mit hoher Kardinalität, Text- und GeodatensucheBereiche auf den Spalten, nach denen die Tabelle sortiert ist
SchlüsselSpalten und deterministische AusdrückeSpaltenSpalten und Ausdrücke
Antwort ohne Lesen der TabelleJa, wenn er die Abfrage abdecktNeinDie Tabelle selbst wird umorganisiert
Abgerechnet alsSearch OptimizationSearch OptimizationAutomatisches Clustering
  1. 1

    Für den Hauptzugriff mit Clustering beginnen

    Filtert fast jede Abfrage nach Datum, clustern Sie die Tabelle nach Datum. Ein Clustering-Schlüssel bedient das häufigste Muster.

  2. 2

    Für den zweiten Zugriff einen Index ergänzen

    Sucht eine App, eine API oder ein KI-Agent Zeilen auch nach Kunden-, Bestell- oder Geräte-ID, erspart ein Index auf dieser Spalte das Umorganisieren der ganzen Tabelle.

  3. 3

    Search Optimization für Text und viele Spalten nutzen

    Teilstringsuche, Geofilter und spontane Gleichheitsfilter über viele Spalten bleiben ihre Aufgabe.

  4. 4

    Mit echten Abfragen testen

    Vergleichen Sie Laufzeit und gelesene Partitionen im Query Profile vorher und nachher, und behalten Sie den Index nur, wenn er sich rechnet.

Grenzen, die Sie vorher kennen sollten

Funktioniert mit

Unterstützt
  • Standardtabellen in Snowflake, mehrere Indizes pro Tabelle
  • Gleichheits-, Ungleichheits-, Bereichs- und IN-Filter
  • Deterministische skalare Ausdrücke, auch Casts

Gemacht für selektive Abfragen auf großen Tabellen.

Funktioniert nicht mit

Nicht unterstützt
  • Apache-Iceberg-Tabellen, Views und Materialized Views
  • Abfragen mit Time Travel
  • Tabellen oder Spalten mit Row-Access-, Masking-, Aggregations- oder Privacy-Policies
  • Replikation, vorerst

Der Optimizer nutzt höchstens einen Index pro Tabelle in einer Abfrage und kann ihn auch übergehen.

Kosten und Berechtigungen

Zum Anlegen eines Index brauchen Sie OWNERSHIP an der Tabelle und das Recht ADD SEARCH OPTIMIZATION auf ihrem Schema. Löschen darf ihn nur die Eigentümerrolle der Tabelle. Die Pflege-Credits erscheinen im Verlauf der Search Optimization, wo Sekundärindizes eigens gekennzeichnet sind:

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;

Tabellen, die sich ständig ändern, sind teurer zu indizieren, weil jede Änderung in den Index übernommen werden muss. Am meisten bringen Indizes bei großen Tabellen, die oft selektiv gelesen und in Batches aktualisiert werden.

Testen Sie Ihr Wissen

1/3Was fügt INCLUDE einem Snowflake-Sekundärindex hinzu?

2/3Welcher Tabellentyp kann keinen Sekundärindex haben?

3/3Wie wird die Indexpflege abgerechnet?

Mehr zu Snowflake: das Snowflake-Update Oktober 2026, die Datenplattform-News dieser Woche, der Snowflake-Spickzettel und Snowflake oder Databricks für KI-Agenten. Neu bei Snowflake? Beginnen Sie mit Erste Schritte mit Snowflake.

Quellen: Snowflakes Release Note „Secondary indexes (General availability)“ (26. Oktober 2026) und die Snowflake-Dokumentation zu Sekundärindizes, CREATE INDEX und Search Optimization. Funktionen werden je nach Region und Edition ausgerollt; prüfen Sie die Verfügbarkeit in Ihrem Konto.

Alessandro Ecclesie AgazziGeschrieben von Alessandro Ecclesie Agazzi, Analytics Engineer in London. Aktualisiert am 28 Oktober 2026. Über mich

War das hilfreich?

Hier erscheinen regelmäßig neue Leitfäden und Artikel zu Neuigkeiten rund um Daten und KI. Folgen Sie mir auf LinkedIn oder teilen Sie diesen Artikel mit Kollegen.