PostgreSQL CTE 머터리얼라이제이션과 비결정적 서브쿼리, 그리고 LIMIT의 함정 다시 보기
PostgreSQL에서 CTE, DELETE, LIMIT를 함께 쓸 때 서브쿼리가 여러 번 실행되어 예상보다 많은 행이 삭제될 수 있어요. 특히 SKIP LOCKED
와 IN
을 조합하면 주의가 필요합니다. MATERIALIZED CTE로 한 번만 실행되게 하면 안전하게 처리할 수 있어요!