[MySQL] 페이징 처리

2022. 10. 4. 17:41DataBase/MySQL

문제 정의

MySQL을 이용하여 페이징 처리를 어떻게 해야하는지 전혀 감이 안 오는 상황이고 Oracle 처럼 Rownum을 이용해 복잡한 처리를 해야되는지 의문이 드는 상황이다.

 

사실 수집

MySQL과 Oracle 은 같은 회사의 프로그램들이다.

그러나 문법이 비슷하면서도 다른점이 다수 존재한다.

ROWNUM 과 limit은 비슷하지만 아예 다른 문법이다.

원인 추론

현재는 같은 회사이지만 다른 것들이 존재하는 이유는 당연히 태생부터 달랐기 때문인 것 같다.

우선 Oracle과 MySQL은 서로 다른 고객들을 보유하고 있다. 오라클의 경우에는 충분히 큰 예산과 복잡한 비지니스 요구에 대흥 하기 위해 만들어졌고, MySQL은 무료로 오픈 소스 프로젝트들에 친화적인 것이 첫 시작이었지만 2010년에 오라클에 합병되었다.

코드로 돌아가서 limit는 쿼리가 order by 절까지 모두 실행 후 해당 결과에서 원하는 행의 데이터를 가져오는 것이다.

ROWNUM은 쿼리가 완전히 수행되지 않은 원 데이터의 정렬순서대로 번호를 매긴다.

조치 및 방안 검토

MySQL에는 limit 를 이용하여 자료를 쉽게 추출할 수가 있다.

limit을 사용하는 방법은 2가지가 있다.

1. 

select 컬럼명 from table명 limit 개수;

limit 이후 개수로 지정된 숫자만큼 행이 출력된다.

2.
select 컬럼명 from table명 limit offset, 개수;

offset으로 몇 번째 행부터 출력할지 결정할 수 있다.

 

따라서 2. 방법을 써서 페이징 처리를 할 것이다.

결과 관찰

실제로 했을 때 이상없이 작동하는 모습을 확인 할 수 있었다.

offset 부분에 내가 원하는 행의 번호들을 입력하여서 페이징 처리를 할 수 있었다.

 

문제 해결 여부

문제 해결