DB/SQL

[SQL] MariaDB와 Oracle에서의 페이징 처리 : 쿼리 비교와 예시

콩다영 2024. 4. 25.
728x90

 

마리아DB(MariaDB)와 오라클(Oracle)은 SQL 쿼리 언어의 표준을 따르고 있지만, 몇 가지 차이점이 있습니다.

차이점과 예시 쿼리를 비교해보며 각 상황에 맞게 적용해 봅시다.

 

 

 

  페이징 처리와 관련된 쿼리 작성 시 차이점

 

1.  LIMIT 및 OFFSET vs ROW_NUMBER() 함수

▶ 마리아DB (MariaDB) 

: 페이징 처리를 위해 'LIMIT' 및 'OFFSET' 절을 사용합니다.

: 'LIMIT'반환할 행의 수를 지정하고, 'OFFSET'시작할 행의 위치를 지정합니다.

▶ 오라클 (Oracle) 

: 오라클에서는 'ROW_NUMBER()' 함수서브쿼리를 사용하여 페이징 처리를 합니다.

: 'ROW_NUMBER()' 함수를 사용하여 각 행에 순서를 부여하고, 그 순서를 기준으로 특정 범위의 행을 선택합니다.

 

 

2. 구문 및 문법 차이

마리아DB (MariaDB) 

: 일반적인 SQL 문법을 따르며, 'LIMIT'과 'OFFSET'을 사용하여 페이징 처리를 합니다.

: 대부분의 SQL 데이터베이스와 유사한 문법을 가지고 있어 사용하기 쉽습니다.

오라클(Oracle) 

: PL/SQL이라는 고유한 프로시저 언어를 사용하여 쿼리를 작성합니다.

: 'ROW_NUMBER()' 함수와 서브쿼리를 사용하여 페이징 처리를 구현합니다.

 

 

3. 성능 및 최적화

마리아DB (MariaDB) 

:'LIMIT'과 'OFFSET'을 사용할 경우, OFFSET이 큰 경우 성능 저하가 발생할 수 있습니다. 

이를 최적화하기 위해 인덱스를 활용할 수 있습니다.

오라클(Oracle) 

: 'ROW_NUMBER()' 함수를 사용하여 페이징 처리를 할 경우, 성능에 영향을 줄 수 있습니다.

특히 대량의 데이터를 다룰 때는 쿼리의 성능을 고려해야 합니다.

 

 

≫ 마리아DB와 오라클은 페이징 처리를 위해 각각 다른 방식을 사용합니다. 마리아DB는 'LIMIT'과 'OFFSET'을 사용하여 간단하게 페이징 처리를 할 수 있지만, 오라클은 'ROW_NUMBER()' 함수와 서브쿼리를 사용하여 복잡한 쿼리를 작성해야 합니다. 따라서 데이터베이스 종류에 따라 페이징 처리를 구현하는 방법이 다르므로, 개발자는 해당 데이터베이스의 문법과 특징을 잘 이해하고 적절한 방법을 선택해야 합니다.

 

 

 

 

  마리아DB (MariaDB) - LIMIT 및 OFFSET 사용

-- 페이지당 10개의 아이템을 가져오고, 3페이지를 가져오는 쿼리
SELECT * FROM items
ORDER BY item_id
LIMIT 10 OFFSET 20;  -- 3페이지

 위의 쿼리는 마리아DB에서 페이징 처리를 위해 'LIMIT'과 'OFFSET'을 사용한 예시입니다.

이 쿼리는 'items' 테이블에서 'item_id'를 기준으로 정렬한 후 21번째부터 30번째까지의 행을 가져옵니다.

(페이지 번호가 1부터 시작한다고 가정.)

 

 

  오라클 (Oracle) - ROW_NUMBER() 함수 사용

-- 페이지당 10개의 아이템을 가져오고, 3페이지를 가져오는 쿼리
SELECT *
FROM (
    SELECT
        items.*,
        ROW_NUMBER() OVER (ORDER BY item_id) AS row_num
    FROM items
)
WHERE row_num BETWEEN 21 AND 30;  -- 3페이지

위의 쿼리는 오라클에서 페이징 처리를 위해 'ROW_NUMBER()' 함수를 사용한 예시입니다.

서브쿼리를 사용하여 각 행에 순서를 부여하고, 이를 기준으로 특정 범위의 행을 선택합니다. 따라서 이 쿼리는 마리아DB의 'LIMIT'과 'OFFSET'을 대신하여 같은 결과를 얻을 수 있습니다.

 

 

 

728x90
반응형

'DB > SQL' 카테고리의 다른 글

[SQL] HAVING 과 WHERE 차이  (0) 2023.06.16
[SQL] COALESCE() 함수 NULL 변환  (0) 2023.04.01
[SQL] NULL값과 ‘’(공백) 비교  (1) 2023.03.22
[SQL] Oracle SQL - DESC  (0) 2020.11.27
[Oracle] SQL Developer - Date Format 변경  (0) 2020.11.09

댓글