SnowConvert AI - 일반 성능 검토 메시지¶
SSC-PRF-0001¶
이 문에서 커서 가져오기 대량 작업이 사용됩니다
설명¶
이 경고는 문이 커서 가져오기 대량 작업을 사용한다는 것을 나타냅니다. 이러한 작업을 사용하면 커서에서 한 번에 한 행씩이 아니라 여러 행의 데이터를 한 번에 검색할 수 있습니다. 대량 작업을 사용하면 클라이언트와 서버 간에 필요한 통신 횟수가 줄어들어 성능이 향상됩니다.
이 패턴은 올바르게 구현하지 않으면 복잡해질 수 있습니다. 예를 들어, 한 번의 가져오기 작업에서 너무 많은 행을 검색하면 메모리가 과도하게 소모될 수 있습니다. 가져오는 행 수와 사용 가능한 메모리 리소스 간의 균형을 유지하는 것이 중요합니다.
코드 예제¶
Oracle¶
입력¶
출력¶
모범 사례¶
추가 지원이 필요하면 snowconvert-support@Snowflake.com으로 문의해 주십시오.
SSC-PRF-0002¶
대소문자를 구분하지 않는 열로 인해 쿼리 성능이 저하될 수 있습니다
설명¶
Snowflake에서 데이터 정렬을 사용하면 특히 WHERE 절에서 쿼리 성능에 영향을 미칠 수 있습니다. 데이터 정렬이 성능에 미치는 영향에 대해 자세히 알아보려면 데이터 정렬 사용의 성능 영향 을 참조하십시오.
대/소문자를 구분하지 않는 데이터 정렬로 열이 생성되었음을 나타내는 경고가 생성되었습니다. 쿼리에서 이 열을 사용하면 성능이 저하될 수 있습니다.
코드 예¶
출력¶
Oracle¶
입력¶
출력¶
Microsoft SQL 서버¶
입력¶
출력¶
모범 사례¶
대/소문자를 구분하지 않는 데이터 정렬로 인해 애플리케이션의 성능이 크게 영향을 받는다면 해당 기능을 사용하지 않도록 코드를 다시 작성하는 것이 좋습니다. 그러나 성능에 미치는 영향이 허용 가능한 수준이라면 이 경고를 무시해도 됩니다.
추가 지원이 필요하면 snowconvert-support@Snowflake.com으로 문의해 주십시오.
SSC-PRF-0003¶
루프 내부의 가져오기는 복잡한 패턴으로 간주되므로 Snowflake 성능을 저하시킬 수 있습니다
심각도¶
낮음
설명¶
이 경고는 루프 내에서 FETCH 문이 감지될 때 표시됩니다. FETCH 문은 결과 세트에서 개별 행을 한 번에 1개씩 검색하고 처리합니다.
특히 루프 내에서 커서를 사용하여 대규모 데이터 세트를 처리하는 것은 복잡해질 수 있습니다.
여러 테이블 조인이 관련된 경우
복잡한 계산이 필수 경우
많은 수의 행을 처리해야 하는 경우
이 패턴은 성능 문제를 일으킬 수 있으며 데이터 볼륨이 증가함에 따라 유지 관리가 어려울 수 있습니다.
코드 예제¶
Teradata¶
입력¶
출력¶
Oracle¶
입력¶
출력¶
SQL 서버¶
입력¶
출력¶
모범 사례¶
성능을 개선하고 복잡한 패턴을 피하려면 루프 대신 세트 기반 작업을 사용하십시오. 행 단위 처리를 WHERE 절을 사용하여 여러 행에서 동시에 작업하는 SQL 문(SELECT, UPDATE, DELETE)로 바꿉니다. 이 접근법이 더 효율적이고 유지 관리가 쉽습니다.
Oracle¶
Snowflake¶
세트 기반 작업을 사용하면 데이터를 보다 효율적으로 처리할 수 있습니다.
세트 기반 작업을 사용하면 데이터를 보다 효율적으로 처리할 수 있습니다.
모범 사례¶
추가 지원이 필요하면 snowconvert-support@Snowflake.com으로 문의해 주십시오.
SSC-PRF-0004¶
이 문에서 cursor for loop가 사용됩니다
심각도¶
없음
설명¶
이 경고는 문에 루프용 커서가 포함되어 있음을 나타냅니다. 루프용 커서는 쿼리 결과를 한 번에 한 행씩 처리하는 프로그래밍 구조로, 결과 세트의 개별 레코드로 작업할 수 있습니다.
이 경고는 커서 FOR 루프의 잠재적인 성능 문제를 식별하는 데 도움이 됩니다. 성능 문제가 발생할 수 있습니다.
커서 내에 있는 SELECT 문은 큰 데이터 세트를 반환합니다
루프에는 복잡한 작업이 포함되어 있습니다
루프에는 중첩된 루프가 포함됩니다
SnowConvert AI는 이러한 패턴을 감지할 수 있지만 효율적인 실행을 보장하기 위해 코드를 검토하고 최적화해야 합니다.
코드 예제¶
Teradata¶
입력¶
출력¶
Oracle¶
입력¶
출력¶
모범 사례¶
추가 지원이 필요하면 snowconvert-support@Snowflake.com으로 문의해 주십시오.
SSC-PRF-0005¶
아래 문에서 중첩 커서가 사용됩니다
참고
가독성을 높이기 위해 이 예제에서는 코드의 일부 섹션을 간소화했습니다.
심각도¶
없음
설명¶
이 경고는 문에 중첩된 커서가 포함되어 있음을 나타냅니다. 커서는 쿼리 결과의 행을 한 번에 1개씩 처리할 수 있는 데이터베이스 기능입니다. 중첩 커서는 한 커서를 다른 커서의 루프 안에 사용할 때 발생하며, 성능에 영향을 줄 수 있으므로 주의해서 사용해야 합니다.
중첩된 커서는 특히 많은 양의 데이터로 작업할 때 코드의 성능을 크게 저하시킬 수 있습니다. 커서가 작업할 때마다 데이터베이스 서버와 통신해야 하므로 추가적인 처리 오버헤드와 지연이 발생하기 때문입니다.
코드 예¶
SQL 서버¶
입력¶
출력¶
Oracle¶
명시적 커서¶
입력¶
출력¶
암시적 커서¶
입력¶
출력¶
모범 사례¶
중첩된 커서는 성능에 부정적인 영향을 미치고 코드를 더 복잡하게 생성할 수 있으므로 피해야 합니다.
중첩된 커서 대신 SQL 기능을 사용합니다.
SQL 함수
조인
하위 쿼리
윈도우 함수
일반 테이블 식(CTEs)
재귀 쿼리 이러한 대안은 데이터를 대량으로 처리하며 더 효율적입니다.
추가 지원이 필요하면 snowconvert-support@Snowflake.com으로 문의해 주십시오.
SSC-PRF-0006¶
쿼리 내부의 중첩 커서는 Snowflake에서 지원되지 않습니다
심각도¶
없음
설명¶
쿼리에 커서 정의가 포함된 경우 이 메시지가 표시됩니다. 커서 식이 평가되면 반환되고 중첩된 커서가 자동으로 열립니다. 자세한 내용은 Oracle Cursor 식 을 참조하십시오.
코드 예¶
입력¶
출력¶
모범 사례¶
커서는 성능에 부정적인 영향을 미치고 코드를 더 복잡하게 생성할 수 있으므로 피하는 것이 좋습니다.
중첩된 커서를 사용하는 대신 다음과 같은 대안을 고려해 보십시오.
SQL 함수
조인
하위 쿼리
윈도우 함수
일반 테이블 식(CTEs)
재귀 쿼리 이 옵션은 많은 양의 데이터를 효율적으로 처리하는 데 더 적합합니다.
추가 지원이 필요하면 snowconvert-support@Snowflake.com으로 문의해 주십시오.
SSC-PRF-0007¶
PERFORMANCE REVIEW - CLUSTER BY
설명¶
CLUSTER BY가 사용되어 성능 문제가 발생할 수 있습니다.
코드 예시¶
Teradata:¶
Snowflake:¶
Transact:¶
Snowflake:¶
모범 사례¶
가능한 성능 문제를 식별하기 위해 코드를 검토합니다. 이 항목에 대한 자세한 내용은 여기에서 확인할 수 있습니다.
추가 지원이 필요한 경우 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으로 문의해 주십시오.