[sql] 뷰와 ORDER BY 절의 관계

뷰(View)는 데이터베이스에서 재사용 가능한 쿼리 결과를 가상 테이블 형태로 정의하는 개체입니다. 뷰는 실제 데이터를 저장하지 않으며, 기본 테이블이나 다른 뷰로부터 데이터를 가져와서 쿼리 결과를 생성합니다.

하지만, 뷰에는 ORDER BY 절을 사용하는 제약이 있습니다. 뷰는 기본적으로 ORDER BY 절을 사용하여 정렬된 데이터를 제공하지 않습니다. 이는 뷰의 정의가 쿼리 결과를 반환하는 로직에만 관여하기 때문입니다. 그렇다면, 뷰를 사용하면서 정렬된 데이터를 얻으려면 어떻게 해야 할까요?

1. 뷰 내에서 정렬

뷰 내에서 정렬된 데이터를 얻기 위해서는 뷰 정의에 ORDER BY 절을 추가해야 합니다. 예를 들어, 다음과 같은 뷰를 생성할 수 있습니다.

CREATE VIEW sorted_view AS
SELECT column1, column2, ...
FROM table_name
ORDER BY column_name;

위의 예제에서는 table_name 테이블로부터 데이터를 가져와서 column_name 열을 기준으로 정렬된 결과를 sorted_view라는 뷰로 생성합니다. 이렇게 생성된 뷰를 사용하면 정렬된 데이터를 얻을 수 있습니다.

2. 뷰를 조회할 때 정렬

만약, 기존의 뷰에는 ORDER BY 절이 없지만 해당 뷰를 조회할 때 정렬된 데이터를 얻고 싶다면, 다음과 같이 조회 쿼리에 ORDER BY 절을 추가해야 합니다.

SELECT *
FROM view_name
ORDER BY column_name;

위의 예제에서는 view_name 뷰를 조회하면서 column_name 열을 기준으로 정렬된 결과를 얻습니다.

3. 인덱스를 사용하여 정렬

뷰를 사용하더라도 정렬된 데이터를 얻는 데 어려움을 겪는 경우에는 인덱스를 사용하여 정렬할 수 있습니다. 인덱스는 테이블의 열에 대한 정렬된 데이터를 유지하므로, 해당 열을 기준으로 정렬된 결과를 얻을 수 있습니다.

CREATE INDEX index_name
ON table_name (column_name);

위의 예제에서는 table_name 테이블의 column_name 열에 대한 인덱스를 생성합니다. 이후에는 해당 열을 기준으로 정렬된 결과를 얻을 수 있습니다.

결론

뷰는 ORDER BY 절을 사용하여 정렬된 데이터를 제공하지 않지만, 위에서 소개한 방법을 통해 뷰에서도 정렬된 데이터를 얻을 수 있습니다. 뷰와 ORDER BY 절을 적절히 조합하여 원하는 결과를 얻을 수 있도록 활용해보세요.

자료 출처