반응형
수백만 개의 레코드가있는 SQLite의 효율적인 페이징
목록보기에 SQLite 결과를 표시해야합니다. 물론 결과를 페이징해야합니다.
첫 번째 옵션은 LIMIT 절을 사용하는 것입니다. 예를 들면 :
SELECT * FROM Table LIMIT 100, 5000
5001에서 5100까지의 레코드를 반환합니다. 문제는 SQLite가 내부적으로 처음 5000 개의 레코드를 "읽고"너무 효율적이지 않다는 것입니다.
레코드가 많을 때 페이징을위한 가장 좋은 방법은 무엇입니까?
항상 ORDER BY
절 을 사용해야합니다 . 그렇지 않으면 순서가 임의적입니다.
효율적인 페이징을 수행하려면 순서가 지정된 필드의 첫 번째 / 마지막 표시된 값을 저장하고 다음 페이지를 표시 할 때 바로 뒤에 계속합니다.
SELECT *
FROM MyTable
WHERE SomeColumn > LastValue
ORDER BY SomeColumn
LIMIT 100;
(이것은 SQLite 위키에 더 자세히 설명되어 있습니다 .)
여러 정렬 열 (및 SQLite 3.15 이상)이있는 경우이를 위해 행 값 비교 를 사용할 수 있습니다 .
SELECT *
FROM MyTable
WHERE (SomeColumn, OtherColumn) > (LastSome, LastOther)
ORDER BY SomeColumn, OtherColumn
LIMIT 100;
참고 URL : https://stackoverflow.com/questions/14468586/efficient-paging-in-sqlite-with-millions-of-records
반응형
'IT story' 카테고리의 다른 글
"make"명령 줄 인수 (-D)에서 C 소스 코드로 매크로 정의를 전달하는 방법은 무엇입니까? (0) | 2020.09.01 |
---|---|
github의 프로젝트에 기여, "마스터 위에 내 pull request를 리베이스"하는 방법 (0) | 2020.09.01 |
구조체 선언이 끝날 때 [1]의 목적은 무엇입니까? (0) | 2020.09.01 |
포장 풀기, 확장 풀기 및 중첩 확장 풀기 (0) | 2020.09.01 |
% p로 널 포인터를 인쇄하는 것은 정의되지 않은 동작입니까? (0) | 2020.09.01 |