기능과 비용을 함께 확인합니다

명시적 컬럼 query로 바꾼 뒤 사용 값, NULL 처리, field 이름과 권한 필터가 유지돼야 합니다. Index Only Scan 전환은 원인 설명이지 성공 기준은 아니며, visibility map에 따라 Heap Fetches가 남을 수 있습니다. actual rows, shared hit/read와 serialization을 함께 봅니다.

client와 운영 결과

SERIALIZE는 출력 변환을 측정하지만 network와 driver decode를 포함하지 않으므로 실제 driver의 end-to-end latency와 수신 byte를 별도로 확인합니다. pg_stat_statements의 calls, rows, 실행 시간과 block 통계는 실제 workload를 보여 주지만 client network 시간은 포함하지 않고 여러 parameter 실행이 묶일 수 있습니다.

통과 기준

같은 데이터 분포·parameter·cache 조건에서 기능 결과가 유지되고 DB 또는 client 비용 감소가 반복해서 관찰될 때 채택합니다. 차이가 noise 범위이거나 모든 컬럼이 필요하다면 SELECT *를 성능 문제로 단정하지 않습니다.

공식 문서