thisgun
47a3790c57
[perf]bbs/list.php N+1 쿼리 2건을 IN 쿼리로 배치 조회로 전환
...
게시판 목록 페이지에서 발생하던 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 방지 계층 추가
2026-04-16 02:23:24 +00:00
..
2021-01-04 15:39:15 +09:00
2021-01-04 15:39:15 +09:00
2021-01-04 15:39:15 +09:00
2021-01-04 15:39:15 +09:00
2021-01-04 15:39:15 +09:00
2024-06-04 17:38:33 +09:00
2021-01-04 15:39:15 +09:00
2021-01-04 15:39:15 +09:00
2021-01-04 15:39:15 +09:00
2022-06-13 14:28:35 +09:00
2021-07-01 11:52:11 +09:00
2021-01-04 15:39:15 +09:00
2021-01-04 15:39:15 +09:00
2021-01-04 15:39:15 +09:00
2021-01-04 15:39:15 +09:00
2021-01-04 15:39:15 +09:00
2022-06-13 14:28:35 +09:00
2022-09-27 10:12:18 +09:00
2021-01-04 15:39:15 +09:00
2023-01-02 17:58:22 +09:00
2021-01-04 15:39:15 +09:00
2023-01-02 17:58:22 +09:00
2022-06-13 14:28:45 +09:00
2021-01-04 15:39:15 +09:00
2023-01-09 15:33:03 +09:00
2021-01-04 15:39:15 +09:00
2025-07-31 17:12:43 +09:00
2021-01-04 15:39:15 +09:00
2025-03-31 15:36:32 +09:00
2021-04-02 11:40:50 +09:00
2022-09-27 17:15:46 +09:00
2021-01-04 15:39:15 +09:00
2021-01-04 15:39:15 +09:00
2023-03-23 11:10:28 +09:00
2026-01-30 05:00:43 +00:00
2021-01-04 15:39:15 +09:00
2026-04-16 01:07:17 +00:00
2021-01-04 15:39:15 +09:00
2025-05-14 11:59:40 +09:00
2026-04-16 02:23:24 +00:00
2026-04-16 02:21:23 +00:00
2024-07-03 12:50:12 +09:00
2026-04-16 01:31:19 +00:00
2022-07-25 10:34:51 +09:00
2021-10-07 06:08:38 +00:00
2024-07-03 12:50:12 +09:00
2022-11-22 19:36:35 +09:00
2021-01-04 15:39:15 +09:00
2024-06-04 17:38:33 +09:00
2025-09-22 11:05:39 +09:00
2021-01-04 15:39:15 +09:00
2022-03-11 11:01:15 +09:00
2024-06-04 10:25:59 +09:00
2021-05-10 11:37:20 +09:00
2021-03-15 10:34:22 +09:00
2021-01-04 15:39:15 +09:00
2021-01-04 15:39:15 +09:00
2021-01-04 15:39:15 +09:00
2022-05-24 08:48:51 +00:00
2021-01-04 15:39:15 +09:00
2021-09-30 16:07:55 +09:00
2022-04-18 16:51:53 +09:00
2022-06-15 16:11:06 +09:00
2025-04-15 11:20:44 +09:00
2021-01-13 11:48:34 +09:00
2013-09-13 11:03:33 +09:00
2026-04-03 03:59:23 +00:00
2021-01-04 15:39:15 +09:00
2026-04-16 01:07:17 +00:00
2021-01-04 15:39:15 +09:00
2023-08-11 19:41:25 +09:00
2021-01-04 15:39:15 +09:00
2023-01-02 17:58:22 +09:00
2021-08-13 02:02:21 +00:00
2023-01-02 17:58:22 +09:00
2023-01-03 14:53:08 +09:00
2025-09-19 17:53:50 +09:00
2021-08-12 01:27:33 +00:00
2021-01-04 15:39:15 +09:00
2026-04-16 02:21:23 +00:00
2013-09-13 14:32:06 +09:00
2014-01-20 10:09:14 +09:00
2014-02-06 13:38:07 +09:00
2026-03-30 11:50:30 +00:00
2022-01-19 06:19:04 +00:00
2025-04-15 11:20:44 +09:00
2021-01-04 15:39:15 +09:00
2023-06-19 17:00:42 +09:00
2021-01-04 15:39:15 +09:00
2021-01-06 09:59:33 +09:00
2021-01-04 15:39:15 +09:00
2021-01-04 15:39:15 +09:00
2023-04-17 14:41:38 +09:00
2021-01-04 15:39:15 +09:00
2025-08-28 13:35:14 +09:00
2021-06-22 16:07:02 +09:00
2023-12-18 17:26:30 +09:00
2021-01-04 15:39:15 +09:00
2025-05-15 15:30:40 +09:00
2026-03-30 09:52:41 +00:00
2021-01-04 15:39:15 +09:00
2022-06-13 14:28:35 +09:00
2014-03-18 17:17:11 +09:00
2026-04-06 06:27:09 +00:00
2026-01-27 05:50:34 +00:00