SQL_ view vs with vs cte

윤일권·2024년 3월 3일
0

Oracle SQL

목록 보기
7/7
쿼리를 짜던 도중 view와 with, CTE에 대한 의문이 들었다.
지금까지는 view는 재사용성이 있을 때 사용하고,
with는 말 그대로 쿼리안에서 임시테이블로 사용하기 위해 작성했다.
사실상 서브쿼리를 사용하지 않고 쿼리 최적화를 위해 사용한 경우가 많았다.
하지만 동작원리나 사용 목적에 대해 좀 더 뚜렷하게 알고자 블로깅을 해본다.

정의

뷰(View):

  • 뷰는 하나 이상의 테이블에서 선택한 열과 행의 가상 테이블입니다.
  • 뷰는 데이터베이스에서 저장되는 것이 아니라 쿼리를 실행하여 동적으로 결과를 생성합니다.
  • 일반적으로 복잡한 쿼리를 간소화하고 특정 데이터에 대한 액세스를 용이하게 하기 위해 사용됩니다.

임시 테이블(Temp Table):

  • 임시 테이블은 데이터를 일시적으로 저장하기 위한 테이블입니다.
  • 임시 테이블은 일반적으로 세션 또는 연결이 종료될 때 자동으로 삭제됩니다.
  • 주로 중간 결과를 저장하거나 일시적인 데이터 저장이 필요한 작업에 사용됩니다.

공통 테이블 표현식(CTE, Common Table Expression):

  • 공통 테이블 표현식은 쿼리 내에서 재사용 가능한 서브쿼리를 정의하는 방법입니다.
  • CTE는 WITH 절을 사용하여 정의되며, 쿼리 내에서 한 번 이상 참조될 수 있습니다.
  • 주로 복잡한 쿼리의 가독성을 향상시키고 쿼리를 단순화하기 위해 사용됩니다.

데이터 지속성

  • : 뷰는 데이터를 영구적으로 저장하지 않습니다. 대신, 뷰는 정의된 쿼리를 실행하여 결과를 동적으로 생성합니다. 따라서 뷰를 쿼리할 때마다 해당 쿼리가 실행되어 결과가 반환됩니다.

  • 임시 테이블: 임시 테이블은 일시적으로 데이터를 저장하는 데 사용됩니다. 세션 또는 연결이 종료되면 임시 테이블은 자동으로 삭제됩니다. 그러나 세션이나 연결이 지속되는 동안 임시 테이블에 저장된 데이터는 유지됩니다.

  • CTE: CTE는 쿼리의 일부로 사용되며, 쿼리 실행 중에만 존재합니다. 쿼리가 실행되고 결과가 반환되면 CTE는 자동으로 제거됩니다.

사용 목적

  • : 뷰는 일반적으로 데이터에 대한 편리한 인터페이스를 제공하거나 복잡한 쿼리를 단순화하기 위해 사용됩니다. 뷰는 데이터의 논리적인 뷰를 제공하여 사용자가 데이터에 쉽게 액세스할 수 있도록 합니다.
  • 임시 테이블: 임시 테이블은 주로 중간 결과를 저장하거나 특정 작업을 위해 일시적으로 데이터를 저장하는 데 사용됩니다. 임시 테이블은 데이터를 영구적으로 저장하지 않고 필요에 따라 생성되고 삭제됩니다.
  • CTE: CTE는 주로 쿼리의 가독성을 높이고 복잡한 쿼리를 단순화하기 위해 사용됩니다. CTE는 쿼리 내에서 재사용 가능한 서브쿼리를 정의하고 사용할 수 있도록 해 줍니다.

성능

  • : 뷰는 실행 시 매번 해당하는 쿼리를 실행하므로 성능 측면에서는 임시 테이블이나 CTE보다 더 많은 오버헤드가 발생할 수 있습니다.
  • 임시 테이블: 임시 테이블은 데이터를 실제로 저장하므로 쿼리를 반복해서 실행할 필요가 없어 일반적으로 성능이 좋습니다. 그러나 임시 테이블을 생성하고 삭제하는 데 추가적인 오버헤드가 발생할 수 있습니다.
  • CTE: CTE는 쿼리 내에서 정의되고 사용되므로 임시 테이블보다는 성능이 더 좋을 수 있습니다. 또한 CTE를 사용하면 쿼리의 가독성을 높일 수 있으므로 코드 유지 및 관리가 더 쉬워집니다.

요약
뷰는 논리적인 데이터 뷰를 제공하고
임시 테이블은 일시적인 데이터 저장을 위해 사용되며,
CTE는 쿼리의 가독성을 높이고 복잡성을 줄이는 데 사용됩니다

profile
생각하는 개발자가 되겠습니다!!

0개의 댓글