DuckDB 에서 Parquet 파일 페이징: file_row_number 와 OFFSET 비교
Paging Through a Parquet File in DuckDB: File_row_number or Offset?

저는 대용량 Parquet 파일을 페이징할 때 OFFSET 보다는 file_row_number 를 사용하는 것이 2.5 배 이상 빠르다는 사실을 확인했습니다. DuckDB 는 OFFSET 쿼리를 내부적으로 최적화하지만, LIMIT 값이 100 만 행을 넘으면 성능이 급격히 떨어집니다. 더 중요한 건 ORDER BY 없이 OFFSET 를 사용하면 행이 누락되거나 중복되어도 전체 행 수는 정확히 맞춰져 문제가 감춰진다는 점입니다. 따라서 데이터 무결성을 검증하려면 단순 카운트가 아닌 해시 비교를 사용해야 합니다.
행 수를 세는 것으로 내보낸 데이터를 검증하지 마세요. 600 만 행이 누락되고 500 만 행이 중복되어도 총 행 수는 정확히 2000 만으로 맞춰져서 문제가 드러나지 않기 때문입니다.