마리아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'을 대신하여 같은 결과를 얻을 수 있습니다.
'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 |
댓글