DOCUMENTATION
/
Erste Schritte
Benutzerhandbücher
Entwickler
Referenz
Releases
Tutorials
Snowflake Open Catalog
Status
  1. Übersicht
    • Snowflake Horizon Catalog
      • Applications and tools for connecting to Snowflake
      • Virtuelle Warehouses
      • Datenbanken, Tabellen und Ansichten
      • Datentypen
        • Laden von Daten
        • Dynamische Tabellen
        • Streams und Aufgaben
        • Entladen von Daten
        • Abfragen
            1. Joins
            2. Unterabfragen
              • Abfragen hierarchischer Daten
                • Allgemeine Tabellenausdrücke (Common Table Expressions, CTE)
                  • Abfragen von semistrukturierten Daten
                    • Verwenden der Volltextsuche
                      • Erstellen von SQL zur Laufzeit
                        • Analysieren von Zeitreihendaten
                          • Analysieren von Daten mit Fensterfunktionen
                            • Übereinstimmung erkennen
                              • Sequenzen
                                • Persistente Abfrageergebnisse
                                  • Diskrete Anzahl
                                  • Ähnlichkeitsschätzung
                                    • Häufigkeitsschätzung
                                      • Schätzen von Perzentilwerten
                                        • Abfrageaktivität mit Abfrageverlauf überwachen
                                          • Abfrage-Hash
                                            • Top-K pruning
                                              • Anweisungen abbrechen
                                            • Zusammenarbeit
                                            • Snowflake AI & ML
                                            • Alerts und Benachrichtigungen
                                            • Sicherheit
                                            • Data Governance
                                            • Datenschutz
                                            • Organisationen und Konten
                                            • Business continuity & data recovery
                                            • Leistungsoptimierung
                                            • Kosten und Abrechnung
                                            BenutzerhandbücherAbfragenAbfrage-Hash

                                            Verwenden des Abfrage-Hash zum Identifizieren von Mustern und Trends in Abfragen¶

                                            Um ähnliche Abfragen im Abfrageverlauf zu identifizieren, zu gruppieren und zu analysieren, können Sie einen Hash-Wert des Abfragetextes verwenden. Beispiele:

                                            • Gruppieren Sie Abfragen nach dem Abfrage-Hash, um Muster in kostenintensiven Abfragen zu erkennen.

                                            • Ermitteln Sie die Auswirkungen von Leistungsverbesserungen (z. B. Änderungen an Gruppierungsschlüsseln) auf wiederholte Abfragen.

                                            In den folgenden Ansichten und Tabellenfunktionen können Sie die Spalten query_hash und query_parameterized_hash verwenden, um den Hash des Abfragetextes zu erhalten:

                                            • ACCOUNT_USAGE-Ansichten (1 Jahr Aufbewahrung)

                                              • Ansicht QUERY_HISTORY

                                              • Ansicht QUERY_ACCELERATION_ELIGIBLE

                                              • Ansicht TASK_HISTORY

                                            • INFORMATION_SCHEMA-Tabellenfunktionen (7 Tage Aufbewahrung)

                                              • Tabellenfunktion QUERY_HISTORY

                                              • Tabellenfunktion TASK_HISTORY

                                            Sie können diesen Hash verwenden, um wiederholte Abfragen zu analysieren.

                                            Verwenden des Hash-Wertes der Abfrage (query_hash)¶

                                            Die Spalte query_hash enthält einen Hash-Wert, der auf der Grundlage des kanonisierten Textes der SQL-Anweisung berechnet wird. Wiederholte Abfragen, die genau den gleichen Abfragetext haben, haben auch die gleichen query_hash-Werte.

                                            Wiederholte Abfragen haben auch dann dieselbe query_hash-Wert, wenn sich ihr Abfragetext nur in Folgendem unterscheidet:

                                            • Bezeichner, Sitzungsvariable und Stagingbereich ohne Berücksichtigung der Groß-/Kleinschreibung

                                              Beachten Sie, dass dies nicht für Bezeichner gilt, die unter Verwendung von IDENTIFIER() mit Bindungsvariablen angegeben werden. Bindungsvariablen mit unterschiedlichen Werten erzeugen unterschiedliche Abfrage-Hashes.

                                            • Leerzeichen

                                            • Kommentare

                                            Wenn ein anderer Teil des Abfragetextes zweier Abfragen unterschiedlich ist, haben diese Abfragen unterschiedliche query_hash-Werte.

                                            Die folgenden Abfragen haben zum Beispiel den gleichen query_hash-Wert, weil sie genau den gleichen Abfragetext haben.

                                            SELECT * FROM table1 WHERE table1.name = 'TIM'
                                            
                                            Copy
                                            SELECT * FROM table1 WHERE table1.name = 'TIM'
                                            
                                            Copy

                                            Sie können den query_hash-Wert verwenden, um Muster in der Abfrageleistung zu finden, die sonst vielleicht nicht offensichtlich sind. Auch wenn eine Abfrage bei der einmaligen Ausführung nicht übermäßig teuer ist, kann eine häufig wiederholte Abfrage zu hohen Kosten führen, je nachdem, wie oft sie ausgeführt wird. Sie können den query_hash-Wert verwenden, um die Abfragen zu identifizieren, auf deren Optimierung Sie sich zuerst konzentrieren sollten.

                                            Die folgende Abfrage verwendet zum Beispiel den query_hash-Wert, um die Abfrage-IDs der 100 am längsten ausgeführten Abfragen zu identifizieren:

                                            SELECT
                                                query_hash,
                                                COUNT(*),
                                                SUM(total_elapsed_time),
                                                ANY_VALUE(query_id)
                                              FROM SNOWFLAKE.ACCOUNT_USAGE.QUERY_HISTORY
                                              WHERE warehouse_name = 'MY_WAREHOUSE'
                                                AND DATE_TRUNC('day', start_time) >= CURRENT_DATE() - 7
                                              GROUP BY query_hash
                                              ORDER BY SUM(total_elapsed_time) DESC
                                              LIMIT 100;
                                            
                                            Copy

                                            Verwenden des Hash-Wertes der parametrisierten Abfrage (query_parameterized_hash)¶

                                            Die Spalte query_parameterized_hash enthält einen Hash-Wert, der auf der Grundlage der parametrisierten Abfrage berechnet wird, d. h. der Version der Abfrage nach der Parametrisierung der Literale. Diese Literale müssen im Abfrageprädikat und mit einem der folgenden Vergleichsoperatoren verwendet werden:

                                            • = (gleich)

                                            • != (ungleich)

                                            • >= (größer oder gleich)

                                            • <= (kleiner oder gleich)

                                            Wiederholte Abfragen (auch solche mit unterschiedlichen Parameterwerten) haben denselben query_parameterized_hash-Wert.

                                            Wiederholte Abfragen haben auch dann dieselbe query_parameterized_hash-Wert, wenn sich ihr Abfragetext nur in Folgendem unterscheidet:

                                            • Bezeichner, Sitzungsvariable und Stagingbereich ohne Berücksichtigung der Groß-/Kleinschreibung

                                              Beachten Sie, dass dies nicht für Bezeichner gilt, die unter Verwendung von IDENTIFIER() mit Bindungsvariablen angegeben werden. Bindungsvariablen mit unterschiedlichen Werten erzeugen unterschiedliche Abfrage-Hashes.

                                            • Leerzeichen

                                            • Kommentare

                                            Abfragen, die denselben query_hash-Wert haben, haben auch denselben query_parameterized_hash-Werte, aber nicht umgekehrt.

                                            Die folgenden Abfragen haben zum Beispiel denselben query_parameterized_hash-Wert, da sich die Abfragen nur durch die Literalwerte unterscheiden:

                                            SELECT * FROM table1 WHERE table1.name = 'TIM'
                                            
                                            Copy
                                            SELECT * FROM table1 WHERE table1.name = 'AIHUA'
                                            
                                            Copy

                                            Wie bei dem query_hash-Wert können Sie den query_parameterized_hash-Wert verwenden, um Muster in der Abfrageleistung zu finden, die sonst vielleicht nicht offensichtlich sind.

                                            Die folgende Anweisung berechnet den durchschnittlichen Wert für total_elapsed_time pro Tag für alle Abfragen mit einem bestimmten query_parameterized_hash-Wert (cbd58379a88c37ed6cc0ecfebb053b03):

                                            SELECT
                                                DATE_TRUNC('day', start_time),
                                                SUM(total_elapsed_time),
                                                ANY_VALUE(query_id)
                                              FROM SNOWFLAKE.ACCOUNT_USAGE.QUERY_HISTORY
                                              WHERE query_parameterized_hash = 'cbd58379a88c37ed6cc0ecfebb053b03'
                                                AND DATE_TRUNC('day', start_time) >= CURRENT_DATE() - 30
                                              GROUP BY DATE_TRUNC('day', start_time);
                                            
                                            Copy

                                            Überprüfen der zum Generieren des Hash-Wertes verwendeten Version¶

                                            Im Laufe der Zeit kann sich die Logik ändern, die Snowflake zum Generierung des Abfrage-Hashes verwendet. Änderungen an dieser Logik können dazu führen, dass für dieselbe Abfrage unterschiedliche Hashes erzeugt werden. Für eine bestimmte Abfrage kann sich zum Beispiel der mit Version 1 der Logik erzeugte Hash von dem mit Version 2 der Logik erzeugten Hash unterscheiden.

                                            Die Ansichten und die Ausgabe der Tabellenfunktionen, die die Spalten query_hash und query_parameterized_hash enthalten, enthalten auch die folgenden Spalten mit der Version der Logik, die zum Erstellen des Hash-Wertes verwendet werden:

                                            • query_hash_version

                                            • query_parameterized_hash_version

                                            Die Versionsnummer in diesen Spalten ist ein NUMBER-Wert (z. B. 1 für die erste Version der Logik, 2 für die zweite Version der Logik usw.).

                                            Wenn diese Spalten unterschiedliche Versionsnummern für verschiedene Zeiträume enthalten, können Sie diese Versionsspalten verwenden, um die verschiedenen Hashes für dieselbe Abfrage zu identifizieren. Beispiel:

                                            ...
                                            WHERE (query_hash = 'hash_from_v1' AND query_hash_version = 1)
                                              OR (query_hash = 'hash_from_v2' AND query_hash_version = 2)
                                            
                                            Copy

                                            War diese Seite hilfreich?

                                            Besuchen Sie Snowflake
                                            An Diskussion beteiligen
                                            Mit Snowflake entwickeln
                                            Teilen Sie Ihr Feedback mit
                                            Lesen Sie Neuigkeiten in unserem Blog
                                            Eigene Zertifizierung erhalten
                                            DatenschutzNutzungsbedingungen© 2025 Snowflake, Inc. Alle Rechte vorbehalten.
                                            1. Verwenden des Hash-Wertes der Abfrage (query_hash)
                                            2. Verwenden des Hash-Wertes der parametrisierten Abfrage (query_parameterized_hash)
                                            3. Überprüfen der zum Generieren des Hash-Wertes verwendeten Version
                                            Sprache: Deutsch
                                            • English
                                            • Français
                                            • Deutsch
                                            • 日本語
                                            • 한국어
                                            • Português