SnowConvert AI – Mensagens gerais de análise de desempenho¶
SSC-PRF-0001¶
Esta instrução faz uso de operações de busca em massa de cursor.
Descrição¶
Esse aviso indica que a instrução usa operações em massa de busca de cursor. Essas operações permitem que você recupere várias linhas de dados de um cursor de uma só vez, em vez de uma linha de cada vez. O uso de operações em massa melhora o desempenho ao reduzir o número de comunicações necessárias entre o cliente e o servidor.
Esse padrão pode se tornar complexo se não for implementado corretamente. Por exemplo, a recuperação de muitas linhas em uma única operação de busca pode consumir muita memória. É fundamental manter um equilíbrio entre o número de linhas buscadas e os recursos de memória disponíveis.
Exemplo de código¶
Oracle¶
Entrada¶
Saída¶
Práticas recomendadas¶
Para obter suporte adicional, entre em contato conosco pelo e-mail snowconvert-support@snowflake.com
SSC-PRF-0002¶
Colunas que não diferenciam maiúsculas de minúsculas podem diminuir o desempenho das consultas.
Descrição¶
O uso de agrupamento no Snowflake pode afetar o desempenho da consulta, principalmente nas cláusulas WHERE. Para saber mais sobre como o agrupamento afeta o desempenho, consulte Implicações do uso do agrupamento para o desempenho.
Um aviso foi gerado para indicar que uma coluna foi criada com agrupamento sem distinção entre maiúsculas e minúsculas. O uso dessa coluna em consultas pode causar um desempenho mais lento.
Exemplos de código¶
Saída¶
Oracle¶
Entrada¶
Saída¶
Microsoft SQL Server¶
Entrada¶
Saída¶
Práticas recomendadas¶
Se o desempenho do seu aplicativo for significativamente afetado pelo agrupamento sem distinção entre maiúsculas e minúsculas, considere a possibilidade de reescrever o código para evitar seu uso. Entretanto, se o impacto no desempenho for aceitável, você pode ignorar esse aviso.
Para obter assistência adicional, entre em contato conosco pelo e-mail snowconvert-support@snowflake.com
SSC-PRF-0003¶
A busca dentro de um loop é considerada um padrão complexo, o que pode degradar o desempenho do Snowflake.
Gravidade¶
Low
Descrição¶
Esse aviso aparece quando uma instrução FETCH é detectada em um loop. A instrução FETCH recupera e processa linhas individuais de um conjunto de resultados, uma de cada vez.
O processamento de grandes conjuntos de dados usando cursores dentro de loops pode se tornar complexo, especialmente quando:
Estão envolvidas várias junções de tabelas
São necessários cálculos complexos
Um grande número de linhas precisa ser processado
Esse padrão pode levar a problemas de desempenho e pode ser difícil de manter à medida que o volume de dados aumenta.
Exemplo de código¶
Teradata¶
Entrada¶
Saída¶
Oracle¶
Entrada¶
Saída¶
SQL Server¶
Entrada¶
Saída¶
Práticas recomendadas¶
Para melhorar o desempenho e evitar padrões complexos, use operações baseadas em conjuntos em vez de loops. Substitua o processamento linha por linha por instruções SQL (SELECT, UPDATE, DELETE) que operam em várias linhas simultaneamente usando cláusulas WHERE. Essa abordagem é mais eficiente e mais fácil de manter.
Oracle¶
Snowflake¶
As operações baseadas em conjuntos podem ser usadas para processar dados com mais eficiência.
As operações baseadas em conjuntos podem ser usadas para processar dados com mais eficiência.
Práticas recomendadas¶
Para obter suporte adicional, entre em contato conosco pelo e-mail snowconvert-support@snowflake.com
SSC-PRF-0004¶
Esta instrução faz uso de cursor for loop.
Gravidade¶
Nenhum
Descrição¶
Esse aviso indica que a declaração contém loops do cursor for. Um loop de cursor for é uma estrutura de programação que processa os resultados da consulta uma linha de cada vez, permitindo que o usuário trabalhe com registros individuais de um conjunto de resultados.
Esse aviso ajuda a identificar possíveis problemas de desempenho nos loops do cursor FOR. Podem ocorrer problemas de desempenho quando:
A instrução SELECT dentro do cursor retorna um grande conjunto de dados
O loop contém operações complexas
O loop contém loops aninhados
Embora o SnowConvert AI possa detectar esses padrões, você deve revisar e otimizar o código para garantir uma execução eficiente.
Exemplo de código¶
Teradata¶
Entrada¶
Saída¶
Oracle¶
Entrada¶
Saída¶
Práticas recomendadas¶
Para obter suporte adicional, entre em contato conosco pelo e-mail snowconvert-support@snowflake.com
SSC-PRF-0005¶
A instrução abaixo apresenta usos de cursores aninhados.
Nota
Para facilitar a leitura, simplificamos algumas seções do código neste exemplo.
Gravidade¶
Nenhum
Descrição¶
Esse aviso indica que a instrução contém cursores aninhados. Um cursor é um recurso do banco de dados que permite processar linhas de um resultado de consulta, uma de cada vez. Os cursores aninhados ocorrem quando o usuário usa um cursor dentro do loop de outro cursor, o que pode afetar o desempenho e deve ser usado com cautela.
Os cursores aninhados podem reduzir significativamente o desempenho do seu código, principalmente ao trabalhar com grandes quantidades de dados. Isso ocorre porque toda vez que um cursor opera, ele precisa se comunicar com o servidor de banco de dados, criando atrasos e sobrecarga de processamento adicionais.
Exemplos de código¶
SQL Server¶
Entrada¶
Saída¶
Oracle¶
Cursor explícito¶
Entrada¶
Saída¶
Cursor implícito¶
Entrada¶
Saída¶
Práticas recomendadas¶
Os cursores aninhados devem ser evitados, pois podem afetar negativamente o desempenho e tornar o código mais complexo.
Em vez de cursores aninhados, use recursos SQL, como:
Funções SQL
Junções
Subconsultas
Funções de janela
Expressões de tabela comuns (CTEs)
Consultas recursivas Essas alternativas processam dados em massa e são mais eficientes.
Para obter assistência adicional, entre em contato conosco pelo e-mail snowconvert-support@snowflake.com
SSC-PRF-0006¶
O cursor aninhado dentro de consulta não é compatível com o Snowflake.
Gravidade¶
Nenhum
Descrição¶
Essa mensagem aparece quando uma consulta contém uma definição de cursor. Quando uma expressão de cursor é avaliada, ela retorna e abre automaticamente um cursor aninhado. Para obter mais detalhes, consulte Expressão de cursor Oracle.
Exemplos de código¶
Entrada¶
Saída¶
Práticas recomendadas¶
Recomendamos evitar cursores, pois eles podem afetar negativamente o desempenho e tornar o código mais complexo.
Em vez de usar cursores aninhados, considere estas alternativas:
Funções SQL
Junções
Subconsultas
Funções de janela
Expressões de tabela comuns (CTEs)
Consultas recursivas Essas opções são melhores para processar grandes quantidades de dados com eficiência.
Para obter assistência adicional, entre em contato conosco pelo e-mail snowconvert-support@snowflake.com
SSC-PRF-0007¶
PERFORMANCE REVIEW - CLUSTER BY
Descrição¶
Indica onde o uso de CLUSTER BY pode causar problemas de desempenho.
Exemplo de código¶
Teradata:¶
Snowflake:¶
Transact:¶
Snowflake:¶
Práticas recomendadas¶
Revise o código para identificar possíveis problemas de desempenho. Mais informações sobre esse tópico podem ser encontradas aqui.
Se precisar de mais suporte, envie um e-mail para snowconvert-support@snowflake.com
SSC-PRF-0008¶
Descrição¶
This message appears when SnowConvert AI detects loop usage in procedural code. Loops such as LOOP, WHILE, and FOR can lead to row-by-row processing and may degrade performance in Snowflake, especially when the loop iterates over large datasets or contains complex logic. The message is informational and prompts a review of the pattern.
Exemplo de código¶
PostgreSQL:¶
Snowflake:¶
Best practices¶
Prefer set-based SQL operations (SELECT, INSERT, UPDATE, DELETE) over row-by-row loops.
Avoid nested loops when possible; use joins, CTEs, or window functions instead.
If loops are required, keep iterations small and limit expensive operations inside the loop.
Consider refactoring procedural logic into single statements or bulk operations.
SSC-PRF-0009¶
CURSOR usage review
Gravidade¶
Nenhum
Descrição¶
This message appears when SnowConvert AI detects a cursor declaration in procedural code. Cursors allow row-by-row processing of query results, which can lead to performance issues in Snowflake, especially when processing large datasets.
While cursors are valid in Snowflake Scripting, they introduce overhead because:
Each row is processed individually rather than as a set
Multiple round trips to the database may be required
Memory usage can be higher compared to set-based operations
This warning is informational and prompts a review of whether the cursor usage is necessary or can be replaced with more efficient set-based operations.
Exemplo de código¶
Oracle¶
Entrada¶
Saída¶
Práticas recomendadas¶
Replace cursor-based row-by-row processing with set-based SQL operations (SELECT, INSERT, UPDATE, DELETE) whenever possible.
Use JOINs, subqueries, CTEs (Common Table Expressions), or window functions instead of cursors to process multiple rows efficiently.
If cursors are unavoidable, minimize the work done inside the cursor loop and avoid nested cursors.
Consider using MERGE statements for upsert operations instead of cursor-based conditional INSERT/UPDATE logic.
Para obter assistência adicional, entre em contato conosco pelo e-mail snowconvert-support@snowflake.com
SSC-PRF-0010¶
Partition by removed, at least one of the specified expressions have no iceberg partition transform equivalent
Gravidade¶
Nenhum
Descrição¶
Snowflake supports the PARTITION BY clause in Iceberg tables, however, only Iceberg partition transforms are supported. When transforming paritioning into Iceberg tables, SnowConvert AI will generate the equivalent partition transforms for supported cases. When no partition transform equivalent can be generated for the partition expressions, the PARTITION BY will be removed from the table by commenting it out with this PRF.
This PRF is only generated when SnowConvert AI migrates tables into Iceberg tables using the Tables translation conversion setting.
Exemplos de código¶
Entrada¶
Saída¶
Práticas recomendadas¶
Analyze the impact of partitioning in the performance of queries over the generated Iceberg tables, if the difference is neglible then this PRF can be safely ignored.
Para obter assistência adicional, entre em contato conosco pelo e-mail snowconvert-support@snowflake.com