사람들이 하도 n+1, n+1 거리길래 검색해보니까
쓸데없이 더 조회하는 쿼리를 날리게 되는걸 해결하는게 목표라던데
애초에 마이바티스나 JDBC로 쿼리문 직접 날리는 사람은
자기가 어지간히 쿼리를 못짜는 사람이 아닌 이상 신경 쓸 필요도 없는 문제 맞나?
사람들이 하도 n+1, n+1 거리길래 검색해보니까
쓸데없이 더 조회하는 쿼리를 날리게 되는걸 해결하는게 목표라던데
애초에 마이바티스나 JDBC로 쿼리문 직접 날리는 사람은
자기가 어지간히 쿼리를 못짜는 사람이 아닌 이상 신경 쓸 필요도 없는 문제 맞나?
곰곰히 생각해봐..에휴 - dc App
또또 모르면서 아는척 하고 싶어한다 대기병 걸려가지고 어휴
대기병이 아니라 이런걸 고민안하고 그냥 답만 알고싶은게 안타까워서 - dc App
너도 모르면 그냥 모른다고 하고 나하고 같이 밑에서처럼 알려주는 애들 말 잘 듣고 배우면 되지 뭘
밑에 멍청한 덧글들이 도움이되면 니 수준이고 - dc App
하지만 모르면서 아는척만 하고 싶어하는 너보다는 도움이 많이 되는걸?
여기서 좆대기병 걸린 찐따 냄새가 진동을 하는데 맞나요
취준생은 그냥답글안달아주면안될까..? - dc App
마이바티스도 N+1생김 List 게시글 = select 게시글 for(a :게시글){ List 댓글 = select 댓글 a.set(댓글) } 이런 구조에서 생긴다 - dc App
아 그러네
한번에 조인해야할걸 select로 나눠서 하게되면 발생하게되는 문제임 - dc App
그렇구나 쿼리문 직접 날리는 경우는 저렇게 짜는 경우가 거의 없을테니까 저런게 있다고 알아두기만 하면 하겠다
보통 직접 쿼리짜면 무의식적으로 join하지 - dc App
맞아.. jpa같은걸 안 써봐서 저게 왜 일어나나 이해가 잘 안 됐어
orm에서 lazy loading 쓸때 - dc App
발생하고 orm (e.g. spring data jpa)안 쓰면 안 발생하는 거로암 - dc App
orm안써도 발생한다 - dc App
ㅇㅎ - dc App
ORM 안써도 생긴다. 그냥 JOIN 안하면 생기는 문제임.
그렇구나
Orm 쓰면 니 모르는 새에 n+1 터져서 머리 아플 상황이 오기때문에 강조하는거
그렇겟다
쿼리도 생길순있지 보통은 조인하니까 그럴일은 없지만
맨날 fetch join으로 해결한다는게 그게 left out join돌려서 한번에 갖고오는거였나 위에 지연로딩은 orm이 정확히 필요할때라 반복문을 돌리다보니 프록시를 전체탐색하는 쓰레기짓을 함 - dc App
근데 쌩쿼리에서 n+1은 그냥 문제를 억지로 발생시킬려고 억지로 만든듯 - dc App