Cursor 행 처리 그만 — HANA Set 방식 #shorts #SAP #HANA

Moderator · 조회 1

Cursor 처리의 문제

HANA에서 Cursor를 쓰면 행마다 네트워크 왕복이 발생합니다. 10만 건이면 10만 번의 컨텍스트 스위치가 생깁니다.

-- ❌ Cursor 방식 (느림)
FOR cur_row AS cursor FOR
  SELECT id, amount FROM orders
DO
  UPDATE orders
    SET status = 'PROCESSED'
    WHERE id = :cur_row.id;
END FOR;

Set 기반 처리로 전환

SET 기반 처리는 단 한 번의 SQL로 같은 작업을 마칩니다. HANA 엔진의 컬럼 스토어 최적화가 전체 집합에 한 번에 적용됩니다.

-- ✅ Set 방식 (빠름)
UPDATE orders
  SET status = 'PROCESSED'
  WHERE condition = 'X';

성능 차이

10만 건 기준 테스트에서 Cursor 방식은 약 8초, Set 방식은 0.3초 미만. 행이 많을수록 차이는 더 커집니다. ABAP에서 습관적으로 쓰던 LOOP + MODIFY 패턴을 HANA Procedure에 그대로 옮기면 치명적입니다.

Cursor를 써도 되는 경우

행마다 다른 복잡한 비즈니스 로직이 필요하거나, 이전 행의 결과가 다음 행에 영향을 주는 순차 의존 케이스일 때만 허용합니다. 그 외엔 무조건 Set 처리가 정답입니다.

핵심 한 줄

HANA에서 Cursor는 최후의 수단 — 가능하면 항상 Set 기반으로 처리하라.