2022. 10. 4. 17:41ㆍDataBase/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 부분에 내가 원하는 행의 번호들을 입력하여서 페이징 처리를 할 수 있었다.
문제 해결 여부
문제 해결