SnowConvert AI :一般的なパフォーマンスレビューメッセージ¶
SSC-PRF-0001¶
このステートメントはカーソルフェッチ一括操作を使用します
説明¶
この警告は、ステートメントがカーソルフェッチ一括操作を使用していることを示しています。これらの操作により、一度に1行ずつではなく、一度に複数行のデータをカーソルから取得することができます。一括操作を使用すると、クライアントとサーバー間の通信回数を減らすことができ、パフォーマンスが向上します。
このパターンは正しく実装しないと複雑になります。たとえば、1回のフェッチ操作で多くの行を取得すると、過剰なメモリを消費する可能性があります。フェッチする行数と利用可能なメモリリソースのバランスを保つことが重要です。
コード例¶
Oracle¶
入力¶
出力¶
ベストプラクティス¶
その他のサポートについては、 snowconvert-support@snowflake.com にお問い合わせください
SSC-PRF-0002¶
大文字と小文字を区別しない列は、クエリのパフォーマンスを低下させる可能性があります。
説明¶
Snowflakeでクエリを使用すると、特に WHERE 句でクエリのパフォーマンスに影響を与えることがあります。照合順序がパフォーマンスに与える影響については、 照合順序の使用によるパフォーマンスへの影響 をご参照ください。
列が大文字と小文字を区別しない照合順序で作成されたことを示す警告が発生しました。クエリでこの列を使用するとパフォーマンスが低下する可能性があります。
コードの例:¶
出力¶
Oracle¶
入力¶
出力¶
Microsoft SQL Server¶
入力¶
出力¶
ベストプラクティス¶
大文字と小文字を区別しない照合順序がアプリケーションのパフォーマンスに大きな影響を与える場合は、それを使用しないようにコードを書き換えることを検討してください。ただし、パフォーマンスへの影響が許容できる場合は、この警告を無視してもかまいません。
その他のサポートについては、 snowconvert-support@snowflake.com にお問い合わせください
SSC-PRF-0003¶
ループ内のフェッチは複雑なパターンとみなされるため、Snowflakeのパフォーマンスが低下する可能性がります。
重大性¶
低
説明¶
この警告は、ループ内で FETCH ステートメントが検出された場合に表示されます。FETCH ステートメントは、結果セットから個々の行を一度に取得し、処理します。
ループ内でカーソルを使用する大容量データセットの処理は、特に以下のような場合に複雑になります。
複数のテーブルの結合が関係する場合
複雑な計算が必要な場合
大量の行の処理が必要な場合
このパターンはパフォーマンスの問題につながる可能性があり、データ量が増えるにつれて維持するのが難しくなります。
コード例¶
Teradata¶
入力¶
出力¶
Oracle¶
入力¶
出力¶
SQL Server¶
入力¶
出力¶
ベストプラクティス¶
パフォーマンスを向上させ、複雑なパターンを避けるには、ループの代わりにセットベースの操作を使用します。行ごとの処理を、 SQL ステートメント(SELECT、 UPDATE、 DELETE)に置き換え、 WHERE 句を使用して複数の行を同時に操作します。このアプローチはより効率的で、メンテナンスも簡単です。
Oracle¶
Snowflake¶
セットベースの操作は、データをより効率的に処理するために使用できます。
セットベースの操作は、データをより効率的に処理するために使用できます。
ベストプラクティス¶
その他のサポートについては、 snowconvert-support@snowflake.com にお問い合わせください
SSC-PRF-0004¶
このステートメントはカーソルforループを使用します
重大性¶
なし
説明¶
この警告は、ステートメントにループ用のカーソルが含まれていることを示します。ループ用のカーソルは、クエリ結果を一度に1行ずつ処理するプログラミング構造で、結果セットから個々の記録を扱うことができます。
この警告は、ループ用カーソルにおける潜在的なパフォーマンス問題を特定するのに役立ちます。パフォーマンスの問題は、以下のような場合に発生する可能性があります。
カーソル内の SELECT ステートメントが大容量のデータセットを返す場合
ループに複雑な操作が含まれている場合
ループにネストされたループが含まれている場合
SnowConvert AI はこれらのパターンを検出できますが、効率的な実行を保証するためにコードを確認して最適化する必要があります。
コード例¶
Teradata¶
入力¶
出力¶
Oracle¶
入力¶
出力¶
ベストプラクティス¶
その他のサポートについては、 snowconvert-support@snowflake.com にお問い合わせください
SSC-PRF-0005¶
以下のステートメントには、ネストされたカーソルが使用されています
注釈
読みやすくするために、この例ではコードの一部を簡略化しています。
重大性¶
なし
説明¶
この警告は、ステートメントにネストされたカーソルが含まれていることを示します。カーソルは、クエリ結果の行を一度に処理するデータベース機能です。ネストされたカーソルは、あるカーソルを別のカーソルのループの中で使用するときに発生します。パフォーマンスに影響を与えるため、使用するには注意が必要です。
ネストされたカーソルは、特に大量のデータを扱う場合、コードのパフォーマンスを著しく低下させます。これは、カーソル操作ごとにデータベースサーバーと通信する必要があり、追加の処理オーバーヘッドと遅延が発生するためです。
コードの例:¶
SQL Server¶
入力¶
出力¶
Oracle¶
明示的カーソル¶
入力¶
出力¶
暗黙的カーソル¶
入力¶
出力¶
ベストプラクティス¶
ネストされたカーソルはパフォーマンスに悪影響を与え、コードを複雑にするため避ける必要があります。
ネストされたカーソルの代わりに、次のような SQL 機能を使用します。
SQL 関数
結合
サブクエリ
ウィンドウ関数
共通テーブル式(CTEs)
再帰クエリ。これらのクエリはデータを一括して処理し、より効率的です。
その他のサポートについては、 snowconvert-support@snowflake.com にお問い合わせください
SSC-PRF-0006¶
クエリ内のネストされたカーソルはSnowflakeではサポートされていません
重大性¶
なし
説明¶
このメッセージは、クエリにカーソル定義が含まれている場合に表示されます。カーソル式が評価されると、カーソルは戻り、自動的にネストされたカーソルを開きます。詳細については、 Oracleカーソル式 をご参照ください。
コードの例:¶
入力¶
出力¶
ベストプラクティス¶
カーソルはパフォーマンスに悪影響を与え、コードを複雑にする可能性があるため、避けることをお勧めします。
ネストされたカーソルを使用する代わりに、以下の選択肢を検討してください。
SQL 関数
結合
サブクエリ
ウィンドウ関数
共通テーブル式(CTEs)
再帰クエリ。これらのオプションは、大量のデータを効率的に処理するのに適しています。
その他のサポートについては、 snowconvert-support@snowflake.com にお問い合わせください
SSC-PRF-0007¶
PERFORMANCE REVIEW : CLUSTER BY
説明¶
CLUSTER BY の使用がパフォーマンスの問題を引き起こす可能性のある箇所をマークします。
コード例¶
Teradata:¶
Snowflake:¶
Transact:¶
Snowflake:¶
ベストプラクティス¶
可能性のあるパフォーマンス上の問題を特定するために、コードを確認します。このトピックに関する詳細は[こちら](https://docs.snowflake.com/ja/user-guide/tables-clustering-keys.html)を参照してください。
さらにサポートが必要な場合は、[snowconvert-support@snowflake.com](mailto:snowconvert-support@snowflake.com)までメールでお問い合わせください。
SSC-PRF-0008¶
説明¶
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.
コード例¶
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
重大性¶
なし
説明¶
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.
コード例¶
Oracle¶
入力¶
出力¶
ベストプラクティス¶
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.
その他のサポートについては、 snowconvert-support@snowflake.com にお問い合わせください
SSC-PRF-0010¶
Partition by removed, at least one of the specified expressions have no iceberg partition transform equivalent
重大性¶
なし
説明¶
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.
コードの例:¶
入力¶
出力¶
ベストプラクティス¶
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.
その他のサポートについては、 snowconvert-support@snowflake.com にお問い合わせください