limit는 읽는 읽는 쿼리의 row를 제한 하는 기능이다. SQL문의 제일 마지막에 위치하며 limit(시작위치, 오프셋)
의 구조를 가지고 있다.
limit(0, 10)은 처음부터 10개의 데이터만 필요하다는 뜻이다. 그럼 게시판의 페이징 상황에서 300페이지 자료가 필요하다면 limit(3000, 10)을 하면 된다.
하지만 이 경우 실제 필요한 데이터는 10개지만 3010개를 읽고 10개만 사용하고 3000개는 버려지는 상황이 발생한다.
결국 끝에 있는 자료를 찾을 수록 스캔할 범위가 넓어지니 쿼리속도는 느려진다. 때문에 where절을 통한 페이징을 추천한다.
# 이거 보단
SELECT * FROM some_tabe LIMIT 200000, 10;
# 이걸 추천
SELECT * FROM some_table WHERE id > 200000 limit 0, 10;
SELECT * FROM bulk limit 2900000, 10;
SELECT * FROM bulk WHERE seq >= 2900000 limit 0, 10;
한 줄평 : 근데 페이징에 바로 적용하기에는 중간 페이지를 바로 가는 경우를 좀 생각해봐서 사용해야 할 것 같다.