게시판 목록 페이지에서 발생하던 N+1 쿼리 패턴 2건을 제거:
1. 공지 처리 루프 (line 94~120):
기존에는 bo_notice의 각 wr_id마다 sql_fetch를 따로 호출하여 공지가 N개면
N개의 쿼리가 발생. 유효한 wr_id를 정수화하여 수집한 뒤 단일 IN 쿼리로
일괄 조회하고, id 기반 해시맵으로 원래 순서대로 처리.
2. 검색 결과 2차 조회 (line 199~200):
DISTINCT wr_parent 쿼리로 ID만 받은 뒤, 각 행마다 sql_fetch를 호출하여
검색 결과가 N건이면 추가로 N개의 쿼리가 발생. 단일 IN 쿼리로 모든 부모
글을 일괄 조회 후 $rows_to_process 배열에 원래 순서대로 정렬하여 공통
처리 루프에서 소비. 검색/비검색 분기에서 중복되던 row→list 변환 로직도
공통화.
효과 (공지 5개 + 검색 결과 20건 기준):
기존: 1 DISTINCT + 20 fetch + 5 notice fetch = 26 쿼리
개선: 1 DISTINCT + 1 IN(search) + 1 IN(notice) = 3 쿼리
부수 효과:
- 삭제된 공지/부모글에 대한 에러 처리 개선
(기존은 empty row를 get_list에 넘겨 잠재적 오류, 개선판은 자동 스킵)
- wr_id 정수화로 SQL injection 방지 계층 추가