2011-09-26 3 views
1

내 앱에서 검색 결과를 표시해야합니다. 처음 250 개의 결과를 가져 오지만 총 결과 수를 표시해야합니다.SQLite : 최적화 카운트

이렇게하면 처음 250 개 행 이후에 결과를 가져 오는 것을 멈출 수 없으므로 모든 작업이 느려집니다. 계산할 때 루프를 반복해야합니다.

다른 접근법은 첫 번째 250 행 다음에 루프를 종료 한 다음 두 번째 COUNT() 쿼리를 수행하는 것입니다. 그러나 일부 빠른 벤치마킹에서는 COUNT() 쿼리가 이전에 동일한 쿼리를 실행했다는 사실을 이용하지 않는다는 것을 보여주었습니다.

이와 같은 시나리오를 최적화 할 수있는 방법이 있습니까? 두 개의 별도 쿼리 대신 하나의 쿼리에서 카운팅과 페칭을 결합하면 도움이 될까요? 그리고 만약 그렇다면 어떻게해야합니까?

편집 :이 하나의 테이블 내에있는 경우 죄송합니다, How do I count the number of rows returned in my SQLite reader in C#?

+1

귀하의 질의를 표시하십시오. 인덱스가있는 열에서 count()를 수행하거나 count (*)를 수행합니까? 개수 (my_indexed_column)를 사용해보십시오. 색인을 사용하여 계산하는 것이 빠르지 만 벤치마킹해야합니다. – bot403

+0

http://web.utk.edu/~jplyon/sqlite/SQLite_optimization_FAQ.htm – sehe

+0

http://maxradi.us/documents/sqlite/ – sehe

답변

0

의 중복, 업데이트 된 카운트를 유지하기 위해 트리거를 사용할 수 있습니다.

각 삽입 트리거는 카운트를 증가시킵니다. 각 삭제 트리거는이를 감소시킵니다.

this similar SO question & answer

+0

고정 쿼리가있는 경우에만 가능합니다. 그러나이 행은 LIKE % 쿼리를 사용하는 검색 결과입니다. 사용자가 무엇을 입력할지 미리 알지 못합니다. – Muis