마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

sqlite db 에서 레코드가져올때

0 추천
sqlite db 에서 레코드가져올때

몇천개의 레코드중에서 중간에있는 몇개의 레코드를 뽑아오고싶을때

n1~n2 번째의 레코드를 가져오고싶을때

select * from test limit n1, n2



select * from test

쿼리후 c.moveToPosition(n1); 을통해서

해당레코드로 이동후 가져오는법이 있을수있을것같은데

둘사이에 어떤차이점이 있을까요?

장단점에대해서 조언부탁합니다
참참참 (3,100 포인트) 님이 2013년 7월 30일 질문

2개의 답변

+1 추천
커서에 처음부터 담느냐 담지 않느냐의 차이일듯 싶은데요

 

첫번째 코드는 커서에 필요한 부분만 뽑아서 담는거고

두번째 코드는 커서에 전부 담은 다음에 필요한 부분만 뽑는거고..

전체데이터가 얼마 없으면 별차이 없겠지만 많으면 첫번째께 조금 더 빠르지 않을까 싶네여.

물론 테스트 해보기전엔 장담할 수 없습니다;;
Gradler (109,780 포인트) 님이 2013년 7월 30일 답변
전 두번째 방법을 하고싶고
그이유는 전체 레코드갯수를 알아야되기때문입니다
c.getCount();
근데 갈등하는이유가
속도 등 퍼포먼스적인 측면에서 어떤가 하는부분입니다
+1 추천
첫 번째 방식을 추천합니다.

전체 레코드 갯수는 SQL 문의 COUNT() 함수를 사용해서 구하면 됩니다.
Elex (9,090 포인트) 님이 2013년 7월 30일 답변
그러면 쿼리를 두번 해야되는데
COUNT() 이용해서 갯수구하는 쿼리문으로 한번 실행하고
다시 n1~n2 까지 레코드구하는 쿼리문을 실행해야되는데
이부분에서도 뭔가 손해본다는 느낌이들어서...
DB에게 계산 한 번 더 시키는게
수천개의 레코드를 메모리에 올려 놓는 것보단 훨씬 바람직할 것 같은데요?
감사합니다
좋은하루되세요
...