SnowConvert AI – Allgemeine Leistungsüberprüfungsmeldungen¶
SSC-PRF-0001¶
Diese Anweisung umfasst die Verwendung von Cursor-Fetch-Bulk-Vorgängen.
Beschreibung¶
Diese Warnung zeigt an, dass die Anweisung Cursor-Massenabrufoperationen verwendet. Diese Operationen ermöglichen es Ihnen, mehrere Datenzeilen auf einmal aus einem Cursor abzurufen, anstatt eine Zeile nach der anderen. Die Verwendung von Massenoperationen verbessert die Leistung, indem sie die Anzahl der erforderlichen Kommunikationen zwischen Client und Server reduziert.
Dieses Muster kann sehr komplex werden, wenn es nicht korrekt implementiert wird. Wenn Sie zum Beispiel zu viele Zeilen in einer einzigen Abrufoperation abrufen, kann dies zu einem übermäßigen Speicherverbrauch führen. Es ist wichtig, ein Gleichgewicht zwischen der Anzahl der abgerufenen Zeilen und den verfügbaren Speicherressourcen zu wahren.
Codebeispiel¶
Oracle¶
Eingabe¶
Ausgabe¶
Best Practices¶
Wenn Sie zusätzliche Unterstützung benötigen, kontaktieren Sie uns bitte unter snowconvert-support@snowflake.com
SSC-PRF-0002¶
Spalten, bei denen die Groß-/Kleinschreibung nicht berücksichtigt wird, können die Leistung von Abfragen beeinträchtigen.
Beschreibung¶
Die Verwendung von Sortierung in Snowflake kann die Abfrageleistung beeinträchtigen, insbesondere in WHERE-Klauseln. Wenn Sie mehr darüber erfahren möchten, wie sich die Sortierung auf die Leistung auswirkt, lesen Sie bitte den Abschnitt Leistungsauswirkungen bei Verwendung der Sortierung.
Es wurde eine Warnung erzeugt, die darauf hinweist, dass eine Spalte mit einer Sortierung erstellt wurde, die Groß- und Kleinschreibung nicht berücksichtigt. Die Verwendung dieser Spalte in Abfragen kann zu einer geringeren Leistung führen.
Code-Beispiele¶
Ausgabe¶
Oracle¶
Eingabe¶
Ausgabe¶
Microsoft SQL Server¶
Eingabe¶
Ausgabe¶
Best Practices¶
Wenn die Leistung Ihrer Anwendung durch die Sortierung ohne Berücksichtigung der Groß-/Kleinschreibung erheblich beeinträchtigt wird, sollten Sie erwägen, Ihren Code so umzuschreiben, dass er keine Sortierung verwendet. Wenn die Auswirkungen auf die Leistung jedoch akzeptabel sind, können Sie diese Warnung ignorieren.
Wenn Sie weitere Hilfe benötigen, kontaktieren Sie uns unter snowconvert-support@snowflake.com
SSC-PRF-0003¶
Das Abrufen innerhalb einer Schleife wird als komplexes Muster betrachtet. Dies kann die Leistung von Snowflake beeinträchtigen
Schweregrad¶
Niedrig
Beschreibung¶
Diese Warnung erscheint, wenn eine FETCH-Anweisung innerhalb einer Schleife entdeckt wird. Die FETCH-Anweisung ruft einzelne Zeilen aus einem Resultset ab und verarbeitet sie nacheinander.
Die Verarbeitung großer Datensets mithilfe von Cursorn in Schleifen kann sehr komplex werden, insbesondere wenn:
Mehrere Tabellenverknüpfungen beteiligt sind
Komplexe Berechnungen erforderlich sind
Eine große Anzahl von Zeilen verarbeitet werden muss
Dieses Muster kann zu Leistungsproblemen führen und bei wachsendem Datenvolumen schwierig beizubehalten sein.
Codebeispiel¶
Teradata¶
Eingabe¶
Ausgabe¶
Oracle¶
Eingabe¶
Ausgabe¶
SQL Server¶
Eingabe¶
Ausgabe¶
Best Practices¶
Um die Leistung zu verbessern und komplexe Muster zu vermeiden, verwenden Sie mengenbasierte Operationen anstelle von Schleifen. Ersetzen Sie die zeilenweise Verarbeitung durch SQL-Anweisungen (SELECT, UPDATE, DELETE), die mithilfe von WHERE-Klauseln auf mehrere Zeilen gleichzeitig angewendet werden. Dieser Ansatz ist effizienter und einfacher beizubehalten.
Oracle¶
Snowflake¶
Mengenbasierte Operationen können verwendet werden, um Daten effizienter zu verarbeiten.
Mengenbasierte Operationen können verwendet werden, um Daten effizienter zu verarbeiten.
Best Practices¶
Wenn Sie zusätzliche Unterstützung benötigen, kontaktieren Sie uns bitte unter snowconvert-support@snowflake.com
SSC-PRF-0004¶
Diese Anweisung kann den Cursor für eine Schleife verwenden
Schweregrad¶
Keine
Beschreibung¶
Diese Warnung zeigt an, dass die Anweisung Cursor-FOR-Schleifen enthält. Eine Cursor-FOR-Schleife ist eine Programmierstruktur, die Abfrageergebnisse zeilenweise verarbeitet und es Ihnen ermöglicht, mit einzelnen Datensätzen aus einem Resultset zu arbeiten.
Diese Warnung hilft, potenzielle Leistungsprobleme in Cursor-FOR-Schleifen zu erkennen. Leistungsprobleme können auftreten, wenn:
Die SELECT-Anweisung innerhalb des Cursors ein großes Datenset zurückgibt
Die Schleife komplexe Operationen enthält
Die Schleife verschachtelte Schleifen enthält
Obwohl SnowConvert AI diese Muster erkennen kann, sollten Sie den Code überprüfen und optimieren, um eine effiziente Ausführung zu gewährleisten.
Codebeispiel¶
Teradata¶
Eingabe¶
Ausgabe¶
Oracle¶
Eingabe¶
Ausgabe¶
Best Practices¶
Wenn Sie zusätzliche Unterstützung benötigen, kontaktieren Sie uns bitte unter snowconvert-support@snowflake.com
SSC-PRF-0005¶
Die folgende -Anweisung verwendet verschachtelte Cursor.
Bemerkung
Zur besseren Lesbarkeit haben wir einige Abschnitte des Codes in diesem Beispiel vereinfacht.
Schweregrad¶
Keine
Beschreibung¶
Diese Warnung zeigt an, dass die Anweisung verschachtelte Cursor enthält. Ein Cursor ist ein Datenbankfeature, mit dem Sie Zeilen aus einem Abfrageergebnis einzeln verarbeiten können. Verschachtelte Cursor entstehen, wenn Sie einen Cursor innerhalb der Schleife eines anderen Cursors verwenden. Dies kann die Leistung beeinträchtigen und sollte mit Vorsicht verwendet werden.
Verschachtelte Cursor können die Leistung Ihres Codes erheblich verringern, insbesondere wenn Sie mit großen Datenmengen arbeiten. Das liegt daran, dass ein Cursor jedes Mal, wenn er ausgeführt wird, mit dem Datenbankserver kommunizieren muss, wodurch zusätzlicher Verarbeitungsaufwand und Verzögerungen entstehen.
Code-Beispiele¶
SQL Server¶
Eingabe¶
Ausgabe¶
Oracle¶
Expliziter Cursor¶
Eingabe¶
Ausgabe¶
Impliziter Cursor¶
Eingabe¶
Ausgabe¶
Best Practices¶
Verschachtelte Cursor sollten vermieden werden, da sie die Leistung beeinträchtigen und den Code komplexer machen können.
Verwenden Sie anstelle von verschachtelten Cursorn SQL-Features wie z. B.:
SQL-Funktionen
Joins
Unterabfragen
Fensterfunktionen
Allgemeine Tabellenausdrücke (Common Table Expressions, CTEs)
Rekursive Abfragen Diese Alternativen verarbeiten Daten in großen Mengen und sind effizienter.
Wenn Sie weitere Hilfe benötigen, kontaktieren Sie uns unter snowconvert-support@snowflake.com
SSC-PRF-0006¶
Ein verschachtelter Cursor innerhalb der Abfrage wird in Snowflake nicht unterstützt.
Schweregrad¶
Keine
Beschreibung¶
Diese Meldung erscheint, wenn eine Abfrage eine Cursor-Definition enthält. Wenn ein Cursor-Ausdruck ausgewertet wird, kehrt er zurück und öffnet automatisch einen verschachtelten Cursor. Weitere Einzelheiten finden Sie unter CURSOR Expressions in der Oracle-Dokumentation.
Code-Beispiele¶
Eingabe¶
Ausgabe¶
Best Practices¶
Wir empfehlen, Cursor zu vermeiden, da sie die Leistung beeinträchtigen und den Code komplexer machen können.
Anstatt verschachtelte Cursor zu verwenden, sollten Sie diese Alternativen in Betracht ziehen:
SQL-Funktionen
Joins
Unterabfragen
Fensterfunktionen
Allgemeine Tabellenausdrücke (Common Table Expressions, CTEs)
Rekursive Abfragen Diese Optionen sind besser für die effiziente Verarbeitung großer Datenmengen geeignet.
Wenn Sie weitere Hilfe benötigen, kontaktieren Sie uns unter snowconvert-support@snowflake.com
SSC-PRF-0007¶
PERFORMANCE REVIEW – CLUSTER BY
Beschreibung¶
Markierungen, bei denen die Verwendung von CLUSTER BY Leistungsprobleme verursachen kann.
Beispielcode¶
Teradata:¶
Snowflake:¶
Transact:¶
Snowflake:¶
Best Practices¶
Überprüfen Sie den Code, um mögliche Leistungsprobleme zu erkennen. Weitere Informationen zu diesem Thema finden Sie hier.
Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
SSC-PRF-0008¶
Beschreibung¶
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.
Codebeispiel¶
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
Schweregrad¶
Keine
Beschreibung¶
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.
Codebeispiel¶
Oracle¶
Eingabe¶
Ausgabe¶
Best Practices¶
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.
Wenn Sie weitere Hilfe benötigen, kontaktieren Sie uns unter snowconvert-support@snowflake.com
SSC-PRF-0010¶
Partition by removed, at least one of the specified expressions have no iceberg partition transform equivalent
Schweregrad¶
Keine
Beschreibung¶
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.
Code-Beispiele¶
Eingabe¶
Ausgabe¶
Best Practices¶
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.
Wenn Sie weitere Hilfe benötigen, kontaktieren Sie uns unter snowconvert-support@snowflake.com