- Esquemas:
Exibição COLUMN_QUERY_PRUNING_HISTORY¶
Use essa visualização do uso da conta para obter uma melhor compreensão dos padrões de acesso aos dados durante a execução da consulta, incluindo alguns detalhes em nível de coluna, tais como o “tipo de acesso” e o as expressões de otimização de pesquisa candidatas potencialmente úteis.
É possível usar essa visualização em combinação com a Exibição TABLE_QUERY_PRUNING_HISTORY. Por exemplo, você pode identificar o acesso às tabelas de destino usando a visualização TABLE_QUERY_PRUNING_HISTORY, depois identifique as colunas usadas com frequência nessas tabelas usando a visualização COLUMN_QUERY_PRUNING_HISTORY.
Cada linha nessa visualização representa o histórico de remoção da consulta para uma coluna específica dentro de um determinado intervalo. Os dados são agregados por coluna, por tabela, por intervalo e incluem métricas como o número de consultas executadas, partições verificadas, partições removidas, linhas verificadas, linhas removidas e linhas correspondentes.
Consulte também Exibição TABLE_PRUNING_HISTORY e Remoção em consultas.
Colunas¶
Nome da coluna |
Tipo de dados |
Descrição |
---|---|---|
INTERVAL_START_TIME |
TIMESTAMP_LTZ |
Início do intervalo de tempo (na marca da hora) durante o qual as consultas foram executadas e concluídas. |
INTERVAL_END_TIME |
TIMESTAMP_LTZ |
Fim do intervalo de tempo (na marca da hora) durante o qual as consultas foram executadas e concluídas. |
TABLE_ID |
NUMBER |
Identificador interno/gerado pelo sistema para a tabela que foi consultada. |
TABLE_NAME |
VARCHAR |
Nome da tabela que foi consultada. |
SCHEMA_ID |
NUMBER |
identificador interno/gerado pelo sistema para o esquema com a tabela que foi consultada. |
SCHEMA_NAME |
VARCHAR |
Nome do esquema com a tabela consultada. |
DATABASE_ID |
NUMBER |
Identificador interno/gerado pelo sistema para o banco de dados com a tabela consultada. |
DATABASE_NAME |
VARCHAR |
Nome do banco de dados com a tabela consultada. |
WAREHOUSE_ID |
NUMBER |
Identificador interno/gerado pelo sistema do warehouse que foi utilizado para executar as consultas. |
WAREHOUSE_NAME |
VARCHAR |
Nome do warehouse que executou as consultas. |
QUERY_HASH |
VARCHAR |
O valor de hash calculado com base no texto canônico SQL. |
QUERY_PARAMETERIZED_HASH |
VARCHAR |
O valor de hash calculado com base na consulta parametrizada. |
COLUMN_ID |
NUMBER |
Identificador interno/gerado pelo sistema para a coluna acessada a partir da tabela que foi consultada. |
COLUMN_NAME |
VARCHAR |
Nome da coluna acessada a partir da tabela consultada. |
VARIANT_PATH |
VARCHAR |
Caminho para os dados semiestruturados acessados (se aplicável). NULL se a coluna acessada não tiver um tipo de dados semiestruturado. |
ACCESS_TYPE |
VARCHAR |
Tipo de acesso realizado na coluna (condição |
NUM_QUERIES |
NUMBER |
Número de consultas executadas nesse intervalo com esse valor QUERY_HASH específico, usando esse warehouse, acessando essa coluna (e caminho variante , se aplicável) nessa tabela com esse tipo de acesso. |
AGGREGATE_QUERY_ELAPSED_TIME |
NUMBER |
Tempo total decorrido (em milissegundos) para consultas definidas por NUM_QUERIES. Esse total inclui fila de espera e outros tempos não associados à compilação e execução. |
AGGREGATE_QUERY_COMPILATION_TIME |
NUMBER |
Tempo total de compilação (em milissegundos) para consultas definidas por NUM_QUERIES. |
AGGREGATE_QUERY_EXECUTION_TIME |
NUMBER |
Tempo total de execução (em milissegundos) para consultas definidas por NUM_QUERIES. |
PARTITIONS_SCANNED |
NUMBER |
Número de partições verificadas nessa tabela para consultas definidas por NUM_QUERIES. |
PARTITIONS_PRUNED |
NUMBER |
Número de partições removidas nessa tabela para consultas definidas por NUM_QUERIES. Essas partições foram eliminadas durante o processamento da consulta e não foram digitalizadas, melhorando a eficiência da consulta. |
ROWS_SCANNED |
NUMBER |
Número de linhas verificadas nessa tabela para consultas definidas por NUM_QUERIES. |
ROWS_PRUNED |
NUMBER |
Número de linhas removidas nessa tabela para consultas definidas por NUM_QUERIES. Essas linhas foram eliminadas durante o processamento da consulta e não foram digitalizadas, melhorando a eficiência da consulta. |
ROWS_MATCHED |
NUMBER |
Número de linhas que corresponderam aos filtros da cláusula WHERE durante a verificação dessa tabela para as consultas definidas por NUM_QUERIES. |
SEARCH_OPTIMIZATION_SUPPORTED_EXPRESSIONS |
ARRAY |
Lista de expressões de otimização de pesquisa suportadas nesta coluna que poderiam acelerar a verificação dessa tabela para as consultas definidas por NUM_QUERIES. |
Notas de uso¶
A latência da visualização pode ser de até 4 horas.
Os dados ficam retidos por 1 dia.
Esta exibição não inclui informações de remoção para tabelas híbridas.
Usuários e funções que receberam a função de banco de dados USAGE_VIEWER podem acessar essa visualização. Para obter mais informações, consulte Funções de banco de dados SNOWFLAKE.
A coluna ACCESS_TYPE contém um dos seguintes valores:
O comportamento de acesso mostrado nessa visualização reflete o plano de consulta real que foi executado, que pode ser diferente do texto de consulta original. Por exemplo, se uma cláusula HAVING não faz referência aos resultados agregados produzidos pela cláusula GROUP BY, ela pode ser otimizada e reescrita como uma cláusula WHERE, e o valor de ACCESS_TYPE será
WHERE
.Para condições de filtragem complexas que não podem se beneficiar de uma otimização pushdown, as linhas podem não ser filtradas durante a operação de verificação de tabela, mesmo que não correspondam à condição de filtragem. Portanto, essas linhas são contadas no valor ROWS_MATCHED.
Atualmente, a coluna SEARCH_OPTIMIZATION_SUPPORTED_EXPRESSIONS sugere apenas os métodos de pesquisa EQUALITY e SUBSTRING.
Essa visualização retém dados para as 1.000 verificações de tabela de execução mais longa por consulta. Somente consultas extremamente complexas excedem esse número de verificações, portanto, dados raramente são omitidos.
Exemplo¶
Para um determinado dia, retorne o histórico de remoção em nível de coluna para consultas em uma tabela específica:
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 |
+-------------------------------+----------------+-------------+-------------+-------------+--------------+-------------+--------------+-----------------------------+
A tabela sensor_data_ts
nessa consulta contém 5.356.800 linhas de dados sintéticos de séries temporais. Exatamente metade das linhas na tabela (2678400) foram removidas para uma série de consultas que filtraram as colunas device_id
e temperature
nas condições da cláusula WHERE.
A coluna device_id
é sugerida como destino para uma otimização de pesquisa que usa o método de pesquisa EQUALITY. As verificações de tabela podem se beneficiar da adição dessa otimização de pesquisa.
Dica
Você pode usar a função ARRAY_TO_STRING para converter a coluna SEARCH_OPTIMIZATION_SUPPORTED_EXPRESSIONS em uma string para facilitar a leitura. Por exemplo:
ARRAY_TO_STRING(search_optimization_supported_expressions, ', ')