Ssgtudy 쓱터디 프로젝트를 진행하면서 쿼리에서 애를 먹은 부분.

페이징처리를 했을 때도 검색한 스터디의 순위는 일정해야 하는데, 검색한 것에서 해당하는 걸로만 빼지고 순위를 구하니까 원래 4등이었던 것이 1등으로 나오게 되는 경우가 발생했었다. 

그래서 자바에서도 처리를 해보았던 경우도 있었다. (일단 눈앞에 이 프로젝트는 많은 용량이 아니니까 그냥 할 수 있다고 쳐도, 후에 진짜 서비스에서는 힘들 것 같았다.) 

 

자바에서 처리했을 때 썼던 방식.

모든 행(자료)을 가져온다. 자바에서 questCount에 따라 정렬한다. (일단 이 때는 무조건 순위를 다르게 했음.) 그 arrayList에서 검색한다. (검색할 시에는 Linkedlist보다 arrayList가 더 빠르므로) 그러면 순위를 유지한 채로 자료를 가져올 수 있다. 하지만->

생각한 문제점 > 모든 데이터를 가져오게 되면 정보의 량이 (행의 수가) 엄청 많아지면 ? 

 

그냥 쿼리를 2개를 짜서 검색일 때와 아닐 때를 구문해서 내가 직접 매칭시켜줄까 싶었으나, 그러기엔 수정하기가 조금 귀찮 (!) 기도 했고 하나로도 할 수 있을 것 같아서 그 결과 이미지 쿼리가 되었다.

즉 keyword(검색값)이 있을 때는 제일 안쪽에 있는 서브쿼리(순위가 매겨져 있는 모든 자료)에서 검색한 이름에 부합하는 것들만 나오게!

 

keyword가 없을 때는 평소대로 페이징처리.

 

이렇게 했다.

https://github.com/sophia9999 

>(하지만 아직 검색값이 5000개가 넘는다면.....?? 그럼 검색의 의미가 없지 않을까? 검색어의 단어를 2글자 이상이라고 조건을 주는 것이 좋은가 생각해봐야될 문제

+ Recent posts