SnowConvert AI - Messages généraux d’examen des performances¶
SSC-PRF-0001¶
Cette instruction utilise des opérations de récupération en masse de curseurs.
Description¶
Cet avertissement indique que l’instruction utilise des opérations d’extraction en bloc du curseur. Ces opérations vous permettent de récupérer plusieurs lignes de données d’un curseur en même temps, au lieu d’une ligne à la fois. L’utilisation d’opérations en bloc améliore les performances en réduisant le nombre de communications nécessaires entre le client et le serveur.
Ce modèle peut devenir complexe s’il n’est pas mis en œuvre correctement. Par exemple, récupérer un trop grand nombre de lignes lors d’une seule opération de récupération peut entraîner une consommation excessive de mémoire. Il est essentiel de maintenir un équilibre entre le nombre de lignes extraites et les ressources mémoire disponibles.
Exemple de code¶
Oracle¶
Entrée¶
Sortie¶
Meilleures pratiques¶
Pour une assistance supplémentaire, veuillez nous contacter à l’adresse suivante : snowconvert-support@snowflake.com
SSC-PRF-0002¶
Les colonnes insensibles à la casse peuvent réduire les performances des requêtes.
Description¶
L’utilisation du classement dans Snowflake peut avoir un impact sur les performances des requêtes, en particulier dans les clauses WHERE. Pour en savoir plus sur la manière dont le classement affecte les performances, veuillez vous référer à la section Implications de l’utilisation du classement sur les performances.
Un avertissement a été généré pour indiquer qu’une colonne a été créée avec un classement insensible à la casse. L’utilisation de cette colonne dans les requêtes peut ralentir les performances.
Exemples de code :¶
Sortie¶
Oracle¶
Entrée¶
Sortie¶
Microsoft SQL Server¶
Entrée¶
Sortie¶
Meilleures pratiques¶
Si les performances de votre application sont considérablement affectées par le classement insensible à la casse, envisagez de réécrire votre code pour ne pas l’utiliser. Toutefois, si l’impact sur les performances est acceptable, vous pouvez ignorer cet avertissement.
Pour toute assistance supplémentaire, contactez-nous à l’adresse suivante : snowconvert-support@snowflake.com
SSC-PRF-0003¶
La récupération dans une boucle est considérée comme un modèle complexe, susceptible de dégrader les performances de Snowflake.
Gravité¶
Faible
Description¶
Cet avertissement apparaît lorsqu’une instruction FETCH est détectée dans une boucle. L’instruction FETCH récupère et traite une à une les lignes d’un jeu de résultats.
Le traitement de grands ensembles de données à l’aide de curseurs dans des boucles peut devenir complexe, en particulier lorsque :
Des jointures de tables multiples sont impliquées
Des calculs complexes sont exigés
Un grand nombre de lignes doit être traité
Ce modèle peut entraîner des problèmes de performance et peut être difficile à maintenir au fur et à mesure que le volume de données augmente.
Exemple de code¶
Teradata¶
Entrée¶
Sortie¶
Oracle¶
Entrée¶
Sortie¶
SQL Server¶
Entrée¶
Sortie¶
Meilleures pratiques¶
Pour améliorer les performances et éviter les modèles complexes, utilisez des opérations basées sur des ensembles plutôt que des boucles. Remplacez le traitement ligne par ligne par des instructions SQL (SELECT, UPDATE, DELETE) qui opèrent simultanément sur plusieurs lignes à l’aide de clauses WHERE. Cette approche est plus efficace et plus facile à maintenir.
Oracle¶
Snowflake¶
Les opérations basées sur les ensembles peuvent être utilisées pour traiter les données plus efficacement.
Les opérations basées sur les ensembles peuvent être utilisées pour traiter les données plus efficacement.
Meilleures pratiques¶
Pour une assistance supplémentaire, veuillez nous contacter à l’adresse suivante : snowconvert-support@snowflake.com
SSC-PRF-0004¶
Cette instruction utilise un curseur For Loop.
Gravité¶
Aucun(e)
Description¶
Cet avertissement indique que l’instruction contient un curseur For loops. Une boucle de curseur est une structure de programmation qui traite les résultats d’une requête une ligne à la fois, ce qui vous permet de travailler avec des enregistrements individuels d’un jeu de résultats.
Cet avertissement permet d’identifier les problèmes de performance potentiels dans les boucles FOR du curseur. Des problèmes de performance peuvent survenir dans les cas suivants :
L’instruction SELECT au sein du curseur renvoie un grand ensemble de données
La boucle contient des opérations complexes
La boucle contient des boucles imbriquées
Si SnowConvert AI peut détecter ces modèles, vous devez examiner et optimiser le code pour garantir une exécution efficace.
Exemple de code¶
Teradata¶
Entrée¶
Sortie¶
Oracle¶
Entrée¶
Sortie¶
Meilleures pratiques¶
Pour une assistance supplémentaire, veuillez nous contacter à l’adresse suivante : snowconvert-support@snowflake.com
SSC-PRF-0005¶
L’instruction ci-dessous utilise des curseurs imbriqués.
Note
Pour une meilleure lisibilité, nous avons simplifié certaines sections du code dans cet exemple.
Gravité¶
Aucun(e)
Description¶
Cet avertissement indique que l’instruction contient des curseurs imbriqués. Un curseur est une fonction de base de données qui vous permet de traiter les lignes d’un résultat de requête une par une. On parle de curseurs imbriqués lorsque vous utilisez un curseur à l’intérieur de la boucle d’un autre curseur, ce qui peut avoir un impact sur les performances et doit être utilisé avec prudence.
Les curseurs imbriqués peuvent ralentir considérablement les performances de votre code, en particulier lorsque vous travaillez avec de grandes quantités de données. En effet, à chaque opération, le curseur doit communiquer avec le serveur de la base de données, ce qui entraîne des frais généraux et des retards supplémentaires.
Exemples de code :¶
SQL Server¶
Entrée¶
Sortie¶
Oracle¶
Curseur explicite¶
Entrée¶
Sortie¶
Curseur implicite¶
Entrée¶
Sortie¶
Meilleures pratiques¶
Les curseurs imbriqués doivent être évités car ils peuvent avoir un impact négatif sur les performances et rendre le code plus complexe.
Au lieu de curseurs imbriqués, utilisez les fonctions SQL, telles que :
Fonctions SQL
Jointures
Sous-requêtes
Fonctions de fenêtre
Expressions de table communes (CTEs)
Requêtes récursives Ces alternatives traitent les données en masse et sont plus efficaces.
Pour toute assistance supplémentaire, contactez-nous à l’adresse suivante : snowconvert-support@snowflake.com
SSC-PRF-0006¶
Le curseur imbriqué à l’intérieur de la requête n’est pas pris en charge dans Snowflake.
Gravité¶
Aucun(e)
Description¶
Ce message apparaît lorsqu’une requête contient une définition de curseur. Lorsqu’une expression de curseur est évaluée, elle renvoie et ouvre automatiquement un curseur imbriqué. Pour plus de détails, voir Oracle Cursor Expression.
Exemples de code :¶
Entrée¶
Sortie¶
Meilleures pratiques¶
Nous vous recommandons d’éviter les curseurs, car ils peuvent nuire aux performances et rendre le code plus complexe.
Au lieu d’utiliser des curseurs imbriqués, envisagez les alternatives suivantes :
Fonctions SQL
Jointures
Sous-requêtes
Fonctions de fenêtre
Expressions de table communes (CTEs)
Requêtes récursives Ces options sont plus adaptées au traitement efficace de grandes quantités de données.
Pour toute assistance supplémentaire, contactez-nous à l’adresse suivante : snowconvert-support@snowflake.com
SSC-PRF-0007¶
PERFORMANCE REVIEW - CLUSTER BY
Description¶
Signale les cas où l’utilisation de CLUSTER BY peut entraîner des problèmes de performances.
Exemple de code¶
Teradata :¶
Snowflake :¶
Transigez :¶
Snowflake :¶
Meilleures pratiques¶
Examinez le code afin d’identifier d’éventuels problèmes de performances. Vous trouverez plus d’informations à ce sujet ici.
Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
SSC-PRF-0008¶
Description¶
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.
Exemple de code¶
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
Gravité¶
Aucun(e)
Description¶
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.
Exemple de code¶
Oracle¶
Entrée¶
Sortie¶
Meilleures pratiques¶
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.
Pour toute assistance supplémentaire, contactez-nous à l’adresse suivante : snowconvert-support@snowflake.com
SSC-PRF-0010¶
Partition by removed, at least one of the specified expressions have no iceberg partition transform equivalent
Gravité¶
Aucun(e)
Description¶
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.
Exemples de code :¶
Entrée¶
Sortie¶
Meilleures pratiques¶
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.
Pour toute assistance supplémentaire, contactez-nous à l’adresse suivante : snowconvert-support@snowflake.com