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

안드로이드 앱에서 SQLITE사용하여 데이터에 접근할때 효율성에 대한 질문입니다.

0 추천
안녕하세요.

sqlite를 이용하여 데이터를 넣은뒤 데이터를 리스트로 뷰해주는 방식을 사용하고있습니다.

여기서 질문인데 혹시 쿼리문을 이렇게..

SELECT name FROM table WHERE name='김치'

1. 쿼리문을 사용하서 데이터를 불러올 경우 모든데이터를 순차적으로 접근하면서 조건에맞는 데이터를 가져오는건가요!?

또 2. 저렇게 쿼리문을 통해 sqlite를 사용한 .db파일의 데이터를 불러올때, 앱에서 데이터로의 외부접근이라고 할수있죠?? 그럼 그 처리 시간이 더 오래 걸리나요?..그렇다면 클래스를 만들어 디비의 모든 데이터를 미리 불러와서 객체를 통해 필요한 불러온 내용에서 내용만 탐색하여 찾는게 효율적인 건가요??

간단히 말하자면 실시간으로 쿼리문을 통해 데이터에 접근하는것보다 저장시켜놓고 변수에 접근하는게 더 효율적인가 궁금하단겁니당~

내용이 좀 구체적이지 않아서 이해하기 불편하실수도 있지만 답변 감사히 받겠습니다.
맹꾸 (500 포인트) 님이 2016년 1월 16일 질문

1개의 답변

0 추천
1. DB를 어떻게 구현했느냐에 따라 다를 것 같습니다. 가장 단순하게, 무식하게 작성했다면 말씀하신 것처럼 동작할 것 같습니다. 하지만, DB쪽 이론이 발전한지도 오래 되었고 설마 그렇게 되었을 것 같진 않네요. 학교 과제 수준도 아니고..

2. 말씀하신 것처럼 메모리에 들고 있어서 거기서 원하는 내용만 검색하는 게 더 빠릅니다. 근데 여기서 논란의 소지가 많지요. 메모리에 상주하면서 DB역할을 하는 것을 만들면 메모리DB인데요. 그것을 디버깅하고, 검증하는 비용이 얼마나 들거냐, 그 품질이 과연 SQLite 이상 될거냐 하는거죠. 그리고 메모리에 한없이 많은 데이터를 올려놓을 수도 없습니다. 어지간한 경우라면 그냥 SQLite 쓰시는 게 좋을 겁니다.

성능이 아주 중요하다면 자주 쓰는 데이터들만 메모리에 갖고 있어서 참조하면 되겠네요.

PC의 경우에서라면 RAM과 HDD의 I/O 속도차이는 굉장히 큽니다. 하지만, Flash Memory와 Ram이면 HDD처럼 엄청나게 차이가 나진 않을 것 같네요. 실제 속도 차이는 찾아봐야 알 것 같지만요.
cc1232 (35,280 포인트) 님이 2016년 1월 18일 답변
SELECT name FROM table WHERE name='김치'
예에서 쓰신 쿼리인데, 쿼리 자체가 좀 이상합니다. name이 김치인 것을 조건으로 해놓고 select문에 name을 출력하다니...count 계산하기 위한 용도인건가요?
일단 답변에 늦게 응하여 죄송하고 감사합니다!!
아닙니당!  조금 상식에 어긋날수도 있어보였겠지만 제가쓴 쿼리문은 쿼리문을 사용한다~ 라는 의미의 단순 예시입니다. 필요에 따라 count를 사용합니다~! 데이터의 양은 사용자의 삽입, 삭제에 따라 가변적이고, 사용자 뷰를 위해 사용자가 원할때마다 일부 데이터를 가져와야합니다.
...