Schémas :

ACCOUNT_USAGE

Vue COLUMN_QUERY_PRUNING_HISTORY

Utilisez cette vue Utilisation du compte pour mieux comprendre les modèles d’accès aux données lors de l’exécution d’une requête, notamment certains détails au niveau des colonnes, tels que le « type d’accès » et les expressions d’optimisation de recherche candidates qui pourraient s’avérer utiles.

Vous pouvez utiliser cette vue en combinaison avec Vue TABLE_QUERY_PRUNING_HISTORY. Par exemple, vous pouvez identifier l’accès aux tables cibles en utilisant la vue TABLE_QUERY_PRUNING_HISTORY, puis identifier les colonnes fréquemment utilisées dans ces tables à l’aide de la vue COLUMN_QUERY_PRUNING_HISTORY.

Chaque ligne de cette vue représente l’historique des requêtes éliminées pour une colonne spécifique au cours d’un intervalle de temps donné. Les données sont agrégées par colonne, par table, par intervalle et comprennent des métriques telles que le nombre de requêtes exécutées, les partitions analysées, les partitions supprimées, les lignes analysées, les lignes supprimées et les lignes correspondantes.

Voir aussi Vue TABLE_PRUNING_HISTORY et Élagage de requête.

Colonnes

Nom de la colonne

Type de données

Description

INTERVAL_START_TIME

TIMESTAMP_LTZ

Début de l’intervalle de temps (sur le repère horaire) pendant lequel les requêtes ont été exécutées et complétées.

INTERVAL_END_TIME

TIMESTAMP_LTZ

Fin de l’intervalle de temps (sur le repère horaire) pendant lequel les requêtes ont été exécutées et terminées.

TABLE_ID

NUMBER

Identificateur interne/généré par le système pour la table qui a été interrogée.

TABLE_NAME

VARCHAR

Nom de la table interrogée.

SCHEMA_ID

NUMBER

Identificateur interne/généré par le système pour le schéma contenant la table interrogée.

SCHEMA_NAME

VARCHAR

Nom du schéma contenant la tâche de la table interrogée.

DATABASE_ID

NUMBER

Identificateur interne/généré par le système pour la base de données contenant la table interrogée.

DATABASE_NAME

VARCHAR

Nom de la base de données contenant la table interrogée.

WAREHOUSE_ID

NUMBER

Identificateur interne / généré par le système pour l’entrepôt utilisé pour exécuter des requêtes.

WAREHOUSE_NAME

VARCHAR

Nom de l’entrepôt qui a exécuté les requêtes.

QUERY_HASH

VARCHAR

La valeur de hachage calculée sur la base du texte SQL canonisé.

QUERY_PARAMETERIZED_HASH

VARCHAR

La valeur de hachage calculée à partir de la requête paramétrée.

COLUMN_ID

NUMBER

Identificateur interne/généré par le système pour la colonne accessible à partir de la table interrogée.

COLUMN_NAME

VARCHAR

Nom de la colonne consultée à partir de la table qui a fait l’objet de la requête.

VARIANT_PATH

VARCHAR

Chemin d’accès aux données semi-structurées consultées (le cas échéant). NULL si la colonne consultée ne possède pas de type de données semi-structurées.

ACCESS_TYPE

VARCHAR

Type d’accès effectué sur la colonne (condition WHERE ou JOIN).

NUM_QUERIES

NUMBER

Nombre de requêtes exécutées dans cet intervalle de temps avec cette valeur QUERY_HASH spécifique, en utilisant cet entrepôt, en accédant à cette colonne (et au chemin de variante, le cas échéant) sur cette table avec ce type d’accès.

AGGREGATE_QUERY_ELAPSED_TIME

NUMBER

Temps total écoulé (en millisecondes) pour les requêtes définies par NUM_QUERIES. Ce total comprend le temps d’attente et tout autre temps non lié à la compilation et à l’exécution.

AGGREGATE_QUERY_COMPILATION_TIME

NUMBER

Temps total de compilation (en millisecondes) pour les requêtes définies par NUM_QUERIES.

AGGREGATE_QUERY_EXECUTION_TIME

NUMBER

Temps d’exécution total (en millisecondes) pour les requêtes définies par NUM_QUERIES.

PARTITIONS_SCANNED

NUMBER

Nombre de partitions analysées sur cette table pour les requêtes définies par NUM_QUERIES.

PARTITIONS_PRUNED

NUMBER

Nombre de partitions supprimées dans cette table pour les requêtes définies par NUM_QUERIES. Ces partitions ont été supprimées lors du traitement de la requête et non analysées, ce qui améliore l’efficacité de la requête.

ROWS_SCANNED

NUMBER

Nombre de lignes analysées dans cette table pour les requêtes définies par NUM_QUERIES.

ROWS_PRUNED

NUMBER

Nombre de lignes supprimées dans cette table pour les requêtes définies par NUM_QUERIES. Ces lignes ont été supprimées lors du traitement de la requête et non analysées, ce qui améliore l’efficacité de la requête.

ROWS_MATCHED

NUMBER

Nombre de lignes correspondant aux filtres de la clause WHERE lors de l’analyse de cette table pour les requêtes définies par NUM_QUERIES.

SEARCH_OPTIMIZATION_SUPPORTED_EXPRESSIONS

ARRAY

Liste des expressions d’optimisation de recherche prises en charge dans cette colonne qui pourraient potentiellement accélérer l’analyse de cette table pour les requêtes définies par NUM_QUERIES.

Notes sur l’utilisation

  • La latence pour la vue peut atteindre 4 heures.

  • Les données sont conservées pendant 1 an.

  • Cette vue n’inclut pas les informations d’élagage pour les tables hybrides.

  • Les utilisateurs et les rôles auxquels le rôle de base de données USAGE_VIEWER a été attribué peuvent accéder à cette vue. Pour plus d’informations, voir Rôles des bases de données SNOWFLAKE.

  • La colonne ACCESS_TYPE contient l’une des valeurs suivantes :

    • WHERE : La colonne est utilisée dans une condition de filtre dans la clause WHERE.

    • JOIN : La colonne est utilisée dans une condition pour une opération JOIN.

  • Le comportement d’accès affiché dans cette vue reflète le plan de requête réel qui a été exécuté, lequel peut différer du texte de requête d’origine. Par exemple, si une clause HAVING ne fait pas référence aux résultats agrégés produits par la clause GROUP BY, elle peut être optimisée et réécrite sous la forme d’une clause WHERE, et la valeur ACCESS_TYPE sera WHERE.

  • Pour les conditions de filtrage complexes qui ne peuvent pas bénéficier d’une optimisation pushdown, les lignes peuvent ne pas être filtrées lors de l’opération d’analyse de la table, même si elles ne répondent pas à la condition de filtrage. Par conséquent, ces lignes sont comptées dans la valeur ROWS_MATCHED.

  • Actuellement, la colonne SEARCH_OPTIMIZATION_SUPPORTED_EXPRESSIONS suggère uniquement les méthodes de recherche EQUALITY et SUBSTRING.

  • Cette vue conserve les données des 1 000 analyses de table les plus longues par requête. Seules les requêtes extrêmement complexes dépassent ce nombre d’analyses, de sorte que les données sont rarement omises.

Exemple

Pour un jour donné, renvoie l’historique des suppressions au niveau des colonnes pour les requêtes effectuées sur une table spécifique :

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;
Copy
+-------------------------------+----------------+-------------+-------------+-------------+--------------+-------------+--------------+-----------------------------+
| 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                        |
+-------------------------------+----------------+-------------+-------------+-------------+--------------+-------------+--------------+-----------------------------+

La table sensor_data_ts de cette requête contient 5 356 800 lignes de données chronologiques synthétiques. Exactement la moitié des lignes de la table (2 678 400) ont été supprimées pour un certain nombre de requêtes qui ont filtré les colonnes device_id et temperature dans les conditions de la clause WHERE.

La colonne device_id est suggérée comme cible pour une optimisation de recherche qui utilise la méthode de recherche EQUALITY. Les analyses de table pourraient bénéficier de l’ajout de cette optimisation de recherche.

Astuce

Vous pouvez utiliser la fonction ARRAY_TO_STRING pour convertir la colonne SEARCH_OPTIMIZATION_SUPPORTED_EXPRESSIONS en chaîne afin d’en faciliter la lecture. Par exemple :

ARRAY_TO_STRING(search_optimization_supported_expressions, ', ')
Copy