BackEnd/Linkllet2 [Linkllet] 검색 쿼리 개선하기 (by 커버링 인덱스) 우선 이번 테스트는 M1 맥북, 메모리 16G의 노트북에서 docker 환경의 MySQL에서 수행되었습니다. 전체 article 데이터 약 87만건을 기준으로 실험하였습니다. 1. 문제 되는 상황 우선 원래의 "프로그램"을 검색하는 query는 다음과 같다. select a.article_id, a.title, a.link, a.created_at from article a where a.member_id = 1 and (a.title like '%프로그램%' escape '!') order by a.created_at asc; 실행 결과는 다음과 같다. 약 2.4초가 걸렸으며, 데이터의 건수는 485건이 조회된다. 검색 쿼리의 실행계획은 다음과 같다. 몇 가지 살펴보자! type이 ALL로 되어 있는거.. BackEnd/Linkllet 2023. 8. 13. [Linkllet] 흔한 N+1 문제 해결하기 1. 문제 되는 상황팀원 중 한 분이 폴더 목록을 조회할 때, 해당 폴더 내부에 몇 개의 링크가 저장되어 있는지 그 원소의 수 또한 함께 전달해 달라 요청해 주셨습니다.이 카톡을 처음 봤을 때 시간이 늦은 시간이었던 지라 매우 간단하게 생각하고 다음날 바로 구현하겠다 하고 눈을 감았습니다만.... 그럴 때 있잖아요? 뭔가 실수한 거 같아서 눈은 감고 있지만 계속 생각날 때?머릿속에 스쳐 지나가는 N+1 쿼리 문제.... 아 이거 폴더마다 count 쿼리가 날아갈 텐데... 아읔....일단 자야지 하면서.... 계속 어떻게 구현할지 생각하다 잠들어버렸습니다..... 다음날 눈 뜨자마자 N+1을 외치면서 눈을 뜨게 되었습니다... (진짜로.. 눈뜨자 마다 이생각부터 난...) 1 - 1) ER 다이어그램현제.. BackEnd/Linkllet 2023. 7. 21. 이전 1 다음