IT story

수백만 개의 레코드가있는 SQLite의 효율적인 페이징

hot-time 2020. 9. 1. 08:03
반응형

수백만 개의 레코드가있는 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

반응형