- Schemas:
Ansicht COLUMN_QUERY_PRUNING_HISTORY¶
Verwenden Sie diese Account Usage-Ansicht, um ein besseres Verständnis der Datenzugriffsmuster während der Ausführung von Abfragen zu erlangen, einschließlich einiger Details auf Spaltenebene, z. B. dem „Zugriffstyp“ und der Ausdrücke zur Suchoptimierung des Kandidaten, die potenziell von Vorteil sind.
Sie können diese Ansicht in Kombination mit der Ansicht TABLE_QUERY_PRUNING_HISTORY verwenden. Sie können zum Beispiel zuerst den Zugriff auf Zieltabellen mit der TABLE_QUERY_PRUNING_HISTORY-Ansicht und dann häufig verwendete Spalten auf diesen Tabellen mit der COLUMN_QUERY_PRUNING_HISTORY-Ansicht identifizieren.
Jede Zeile in dieser Ansicht stellt den Verlauf der Abfrageverkürzung für eine bestimmte Spalte innerhalb eines bestimmten Zeitintervalls dar. Die Daten werden pro Spalte, pro Tabelle, pro Intervall aggregiert und enthalten Metriken, z. B. die Anzahl der ausgeführten Abfragen, der gescannten Partitionen, der verkürzten Partitionen, der gescannten Zeilen, der verkürzten Zeilen und der übereinstimmenden Zeilen.
Siehe auch Ansicht TABLE_PRUNING_HISTORY und Abfrageverkürzung.
Spalten¶
Spaltenname |
Datentyp |
Beschreibung |
---|---|---|
INTERVAL_START_TIME |
TIMESTAMP_LTZ |
Beginn des Zeitraums (auf die Stunde genau), in dem die Abfragen ausgeführt und abgeschlossen wurden. |
INTERVAL_END_TIME |
TIMESTAMP_LTZ |
Ende des Zeitraums (auf die Stunde genau), in dem die Abfragen ausgeführt und abgeschlossen wurden. |
TABLE_ID |
NUMBER |
Interner/systemgenerierter Bezeichner für die Tabelle, die abgefragt wurde. |
TABLE_NAME |
VARCHAR |
Name der Tabelle, die abgefragt wurde. |
SCHEMA_ID |
NUMBER |
Interner/systemgenerierter Bezeichner für das Schema, das die abgefragte Tabelle enthält. |
SCHEMA_NAME |
VARCHAR |
Name des Schemas, das die abgefragte Tabelle enthält. |
DATABASE_ID |
NUMBER |
Interner/systemgenerierter Bezeichner für die Datenbank, die die abgefragte Tabelle enthält. |
DATABASE_NAME |
VARCHAR |
Name der Datenbank, die die abgefragte Tabelle enthält. |
WAREHOUSE_ID |
NUMBER |
Interner/vom System generierter Bezeichner für das Warehouse, das zur Ausführung der Abfragen verwendet wurde. |
WAREHOUSE_NAME |
VARCHAR |
Name des Warehouses, das die Abfragen ausgeführt hat. |
QUERY_HASH |
VARCHAR |
Der Hash-Wert wird auf der Grundlage des kanonisierten SQL-Textes berechnet. |
QUERY_PARAMETERIZED_HASH |
VARCHAR |
Der Hash-Wert, der auf Grundlage der parametrisierten Abfrage berechnet wird. |
COLUMN_ID |
NUMBER |
Interner/vom System generierter Bezeichner für die Spalte, auf die von der abgefragten Tabelle aus zugegriffen wird. |
COLUMN_NAME |
VARCHAR |
Name der Spalte, auf die von der abgefragten Tabelle aus zugegriffen wurde. |
VARIANT_PATH |
VARCHAR |
Pfad zu den semistrukturierten Daten, auf die zugegriffen wird (falls zutreffend). NULL, wenn die Spalte, auf die zugegriffen wurde, keinen semistrukturierten Datentyp aufweist. |
ACCESS_TYPE |
VARCHAR |
Art des Zugriffs auf die Spalte ( |
NUM_QUERIES |
NUMBER |
Anzahl der Abfragen, die in diesem Zeitraum mit diesem spezifischen QUERY_HASH -Wert, die unter Verwendung dieses Warehouses auf diese Spalte (und ggf. den Variantenpfad) in dieser Tabelle mit diesem Zugriffstyp zugreifen. |
AGGREGATE_QUERY_ELAPSED_TIME |
NUMBER |
Insgesamt verstrichene Zeit (in Millisekunden) für Abfragen, die durch NUM_QUERIES definiert sind. Diese Summe beinhaltet auch Warteschlangen und andere Zeit, die nicht mit der Kompilierung und Ausführung verbunden ist. |
AGGREGATE_QUERY_COMPILATION_TIME |
NUMBER |
Gesamtkompilierungszeit (in Millisekunden) für Abfragen, die durch NUM_QUERIES definiert sind. |
AGGREGATE_QUERY_EXECUTION_TIME |
NUMBER |
Gesamtausführungszeit (in Millisekunden) für Abfragen, die durch NUM_QUERIES definiert sind. |
PARTITIONS_SCANNED |
NUMBER |
Anzahl der Partitionen, die in dieser Tabelle für Abfragen gescannt wurden, die durch NUM_QUERIES definiert sind. |
PARTITIONS_PRUNED |
NUMBER |
Anzahl der Partitionen, die in dieser Tabelle für Abfragen verkürzt wurden, die durch NUM_QUERIES definiert sind. Diese Partitionen wurden während der Abfrageverarbeitung eliminiert und nicht gescannt, wodurch die Effizienz der Abfrage verbessert wurde. |
ROWS_SCANNED |
NUMBER |
Anzahl der Zeilen, die in dieser Tabelle für Abfragen gescannt wurden, die durch NUM_QUERIES definiert sind. |
ROWS_PRUNED |
NUMBER |
Anzahl der Zeilen, die in dieser Tabelle für Abfragen verkürzt wurden, die durch NUM_QUERIES definiert sind. Diese Zeilen wurden während der Abfrageverarbeitung eliminiert und nicht gescannt, wodurch die Effizienz der Abfrage verbessert wurde. |
ROWS_MATCHED |
NUMBER |
Anzahl der Zeilen, die einen Treffer für die WHERE-Klauselfilter ergaben, während diese Tabelle nach den durch NUM_QUERIES definierten Abfragen durchsucht wurde. |
SEARCH_OPTIMIZATION_SUPPORTED_EXPRESSIONS |
ARRAY |
Liste der unterstützten Suchoptimierungsausdrücke in dieser Spalte, die potenziell das Durchsuchen dieser Tabelle nach den durch NUM_QUERIESdefinierten Abfragen beschleunigen könnten. |
Nutzungshinweise¶
Die Latenzzeit der Ansicht kann bis zu 4 Stunden betragen.
Daten werden 1 Jahr lang aufbewahrt.
Diese Ansicht enthält keine Bereinigungsinformationen für Hybridtabellen.
Benutzer und Rollen, denen die USAGE_VIEWER-Datenbankrolle gewährt wurde, können auf diese Ansicht zugreifen. Weitere Informationen dazu finden Sie unter SNOWFLAKE-Datenbankrollen.
Die ACCESS_TYPE-Spalte enthält einen der folgenden Werte an:
Das in dieser Ansicht dargestellte Zugriffsverhalten spiegelt den tatsächlich ausgeführten Abfrageplan wider, der vom ursprünglichen Abfragetext abweichen kann. Wenn beispielsweise eine HAVING-Klausel nicht auf aggregierte Ergebnisse verweist, die von der GROUP BY-Klausel produziert werden, könnte sie optimiert und als WHERE-Klausel umgeschrieben werden, und der ACCESS_TYPE-Wert wird
WHERE
lauten.Bei komplexen Filterbedingungen, die nicht von einer Pushdown-Optimierung profitieren können, werden Zeilen während des Tabellenscanvorgangs möglicherweise nicht herausgefiltert, auch wenn sie nicht mit der Filterbedingung übereinstimmen. Daher werden diese Zeilen im ROWS_MATCHED-Wert gezählt.
Derzeit schlägt die SEARCH_OPTIMIZATION_SUPPORTED_EXPRESSIONS-Spalte nur die EQUALITY- und SUBSTRING -Suchmethoden vor.
Diese Ansicht enthält Daten für die 1.000 am längsten ausgeführten Tabellenscans pro Abfrage. Nur äußerst komplexe Abfragen überschreiten diese Anzahl von Scans, sodass Daten selten ausgelassen werden.
Beispiel¶
Rückgabe des Pruning-Verlaufs auf Spaltenebene für Abfragen einer bestimmten Tabelle:
SELECT interval_start_time, table_name, column_name, access_type, num_queries,
rows_scanned, rows_pruned, rows_matched,
search_optimization_supported_expressions::VARCHAR as search_optim
FROM SNOWFLAKE.ACCOUNT_USAGE.COLUMN_QUERY_PRUNING_HISTORY
WHERE interval_start_time like '2025-04-24%' AND table_name='SENSOR_DATA_TS'
ORDER BY 3, 1;
+-------------------------------+----------------+-------------+-------------+-------------+--------------+-------------+--------------+-----------------------------+
| INTERVAL_START_TIME | TABLE_NAME | COLUMN_NAME | ACCESS_TYPE | NUM_QUERIES | ROWS_SCANNED | ROWS_PRUNED | ROWS_MATCHED | SEARCH_OPTIM |
|-------------------------------+----------------+-------------+-------------+-------------+--------------+-------------+--------------+-----------------------------|
| 2025-04-24 14:00:00.000 -0700 | SENSOR_DATA_TS | DEVICE_ID | WHERE | 1 | 2678400 | 2678400 | 5 | ["EQUALITY(\"DEVICE_ID\")"] |
| 2025-04-24 14:00:00.000 -0700 | SENSOR_DATA_TS | DEVICE_ID | WHERE | 1 | 2678400 | 2678400 | 5 | ["EQUALITY(\"DEVICE_ID\")"] |
| 2025-04-24 15:00:00.000 -0700 | SENSOR_DATA_TS | DEVICE_ID | WHERE | 1 | 2678400 | 2678400 | 2678400 | ["EQUALITY(\"DEVICE_ID\")"] |
| 2025-04-24 15:00:00.000 -0700 | SENSOR_DATA_TS | DEVICE_ID | WHERE | 1 | 2678400 | 2678400 | 2678400 | ["EQUALITY(\"DEVICE_ID\")"] |
| 2025-04-24 15:00:00.000 -0700 | SENSOR_DATA_TS | DEVICE_ID | WHERE | 1 | 2678400 | 2678400 | 5 | ["EQUALITY(\"DEVICE_ID\")"] |
| 2025-04-24 15:00:00.000 -0700 | SENSOR_DATA_TS | DEVICE_ID | WHERE | 1 | 2678400 | 2678400 | 2678400 | ["EQUALITY(\"DEVICE_ID\")"] |
| 2025-04-24 17:00:00.000 -0700 | SENSOR_DATA_TS | DEVICE_ID | WHERE | 1 | 2678400 | 2678400 | 2678400 | ["EQUALITY(\"DEVICE_ID\")"] |
| 2025-04-24 17:00:00.000 -0700 | SENSOR_DATA_TS | DEVICE_ID | WHERE | 1 | 2678400 | 2678400 | 2678400 | ["EQUALITY(\"DEVICE_ID\")"] |
| 2025-04-24 19:00:00.000 -0700 | SENSOR_DATA_TS | DEVICE_ID | WHERE | 1 | 2678400 | 2678400 | 2678400 | ["EQUALITY(\"DEVICE_ID\")"] |
| 2025-04-24 19:00:00.000 -0700 | SENSOR_DATA_TS | DEVICE_ID | WHERE | 1 | 2678400 | 2678400 | 2678400 | ["EQUALITY(\"DEVICE_ID\")"] |
| 2025-04-24 17:00:00.000 -0700 | SENSOR_DATA_TS | TEMPERATURE | WHERE | 1 | 5356800 | 0 | 3262387 | NULL |
| 2025-04-24 17:00:00.000 -0700 | SENSOR_DATA_TS | TEMPERATURE | WHERE | 1 | 2678400 | 2678400 | 394106 | NULL |
| 2025-04-24 17:00:00.000 -0700 | SENSOR_DATA_TS | TEMPERATURE | WHERE | 1 | 5356800 | 0 | 1227686 | NULL |
| 2025-04-24 17:00:00.000 -0700 | SENSOR_DATA_TS | TEMPERATURE | WHERE | 1 | 2678400 | 2678400 | 216642 | NULL |
| 2025-04-24 17:00:00.000 -0700 | SENSOR_DATA_TS | TEMPERATURE | WHERE | 1 | 2678400 | 2678400 | 216642 | NULL |
| 2025-04-24 17:00:00.000 -0700 | SENSOR_DATA_TS | TEMPERATURE | WHERE | 1 | 5356800 | 0 | 1227686 | NULL |
| 2025-04-24 17:00:00.000 -0700 | SENSOR_DATA_TS | TEMPERATURE | WHERE | 1 | 5356800 | 0 | 820272 | NULL |
| 2025-04-24 17:00:00.000 -0700 | SENSOR_DATA_TS | TEMPERATURE | WHERE | 1 | 5356800 | 0 | 3262387 | NULL |
| 2025-04-24 17:00:00.000 -0700 | SENSOR_DATA_TS | TEMPERATURE | WHERE | 1 | 5356800 | 0 | 3262387 | NULL |
| 2025-04-24 17:00:00.000 -0700 | SENSOR_DATA_TS | TEMPERATURE | WHERE | 1 | 5356800 | 0 | 1227686 | NULL |
| 2025-04-24 17:00:00.000 -0700 | SENSOR_DATA_TS | TEMPERATURE | WHERE | 1 | 2678400 | 2678400 | 216642 | NULL |
+-------------------------------+----------------+-------------+-------------+-------------+--------------+-------------+--------------+-----------------------------+
Die sensor_data_ts
-Tabelle in dieser Abfrage enthält 5356800 Zeilen mit synthetischen Zeitreihendaten. Genau die Hälfte der Zeilen in der Tabelle (2678400) wurde für eine Reihe von Abfragen, die die device_id
- und temperature
-Spalten in den Bedingungen der WHERE-Klausel gefiltert haben, verkürzt.
Die device_id
-Spalte wird als Ziel für eine Suchoptimierung empfohlen, die die EQUALITY-Suchmethode v.erwendet Tabellenscans könnten von der Hinzufügung dieser Suchoptimierung profitieren.
Tipp
Sie können die ARRAY_TO_STRING-Funktion verwenden, um die SEARCH_OPTIMIZATION_SUPPORTED_EXPRESSIONS-Spalte zur besseren Lesbarkeit in eine Zeichenfolge zu konvertieren. Beispiel:
ARRAY_TO_STRING(search_optimization_supported_expressions, ', ')