자바 for문을 이용해서 db에 여러번 select하면 서버 부하가 걸리나요? 0 3 3,111

by alan [2020.07.13 22:31:49]


안녕하세요~~~ 궁금한점이있습니다.

 

자바 for문을 이용해서 db에 여러번 select하면 서버 부하가 걸리나요?

예를들어 자바 FOR문을이용해서 학생 17명을 select로 뽑아와서 list로 저장하고

학생  list

for(학생 list){  //자바 controller or service

     select 학생수능총점수COUNT,

     select 학생들의 평균 수면시간 등등등............

}

그 학생들의 id로 통계정보를 뽑아와서 학생17명의 LIST에 추가로 통계 정보를 저장을 하는방법인데요 이방법은 자바에서

for문을 돌리면서 학생아이디로 여러개의 selct를 조회해서 list로 저장하는 방식인데요

이러한 방식은 db커넥션이라든지 서버부하문제, 속도문제등 여러 문제가 생길수도 있는 방법이라고 하는거 같은데요

정확히 어떤게 문제인건지 알려주시면 감사하겠습니다.
그러면 위방법의 대안으로 서브쿼리를 이용해서 하나의 sql로 만드는 방법이 좋은방법일까요?????

아니면 더 좋은 방법있으면 알려주시면 감사하겠습니다.

 

 

 

 

 

 

 

 

 

 

 

by pajama [2020.07.13 22:57:28]

하나의 sql로 처리할 수 있다면 학생수만큼 쿼리 실행을 반복하지 않아도 되니 좋을 것 같네요.


by 우리집아찌 [2020.07.15 11:31:50]

아마 커넥션을 맺어진 상태서 여러번 돌게 될겁니다.

하지만 한번에 끝낼수 있는데 불필요하게 여러번 돌리게되면 루프 횟수만큼 늦어지게 될텐데

우선적으로 서버 성능보다는 개발 퍼포먼스가 안나올것 같네요.


by 고기브페 [2020.07.16 16:55:43]

loop 이용하여 Select 하는 것은 좋은 방법이 아니에요 

파자마님 말처럼 한번에 쿼리를 뽑는것이 훨신 좋은 방법이지요

설명을 보니 Grop 함수 별로 서로 다른 Row 에 표시 하시면 해결 될듯 한데 

최근 마농님이 주신 답변이 있어 링크 걸어 드릴게요 

 

http://www.gurubee.net/article/83211

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입