본문 바로가기

ORACLE/Tunning4

[Oracle] 조인의 종류 - Nested,Sorted,Hash Join RDBMS에서는 정규화에 의해 연관된 데이터를 여러개의 테이블로 나누게 됩니다. 그래서 원하는 형식의 데이터를 받아오기 위해 여러개의 테이블을 연결하여 사용하는데 이를 Join을 통해서 할 수 있습니다. Join작업을 할때도 옵티마이저는 어떤 방식으로 조인을 할지 실행계획을 세우게 됩니다. 이번 글에서는 데이터베이스 내부적으로 어떻게 조인을 하는지 아래 3가지 방식에 대해서 알아보겠습니다. Nested Loop Join Sorted Merge Join Hash Join 실습환경 OS : Red Hat Enterprise Linux Server release 6.10 DB : Oracle 11.2.0.1 SID : orcl user : jamong 테이블 구조 SYS@orcl> create tab.. 2020. 10. 7.
[Oracle] Index 탐색 방식 - Unique,Range,Full,Fast,Skip Index 인덱스는 테이블에 대한 동작 속도를 높히기 위해 사용되는 오브젝트입니다. 정렬된 상태로 데이터가 저장되어 빠른 속도로 원하는 데이터에 접근할 수 있습니다. 하지만, 인덱스를 사용한다고 해서 무조건 속도가 빠른 것은 아닙니다. 테이블의 전체 데이터를 출력하는 경우에는 인덱스의 탐색보다는 테이블을 전체 탐색하는것이 빠릅니다. 그래서 주로 탐색하는 데이터가 많은데 반환되는 데이터가 적은 경우 인덱스를 사용하게 됩니다. 이런 인덱스를 사용할때 옵티마이저는 가정 최적화된 방법으로 탐색을 합니다. 인덱스에는 아래의 탐색 방식이 있고 하나씩 살펴보도록 하겠습니다. Index Unique Scan Index Range Scan Index Full Scan Index Fast Full Scan Index Sk.. 2020. 10. 5.
[Oracle] 실행계획 확인 방법 XPLAN, AutoTrace, SQL Trace 실행계획 알고리즘 문제 풀때를 떠올려봅시다. 문제를 읽고 어떤 방식으로 풀어야 정확도와 효율성을 잡을 수 있을지 고민합니다. 완전탐색을 해야하는지, 이분탐으로 시간복잡도를 줄일 수 있는지, 혹은 자료구조를 어떤 것을 선택해야하는지 등 여러 고민을 하고 최적이라고 생각하는 방법을 선택합니다. 실행계획도 알고리즘 문제를 푸는 과정과 비슷합니다. 옵티마이저가 어떤 방식으로 쿼리를 실행해야 빠른속도로 결과를 반환할 수 있는지 고려하여 결과를 얻기까지의 과정을 알려줍니다. 우리는 이러한 실행계획을 확인하면서 SQL 쿼리문이 효율적으로 사용되고 있는지 확인할 수 있습니다. 데이터가 대량으로 늘어나면서 특히 속도가 중요한 요소가 되었습니다. 간단한 튜닝을 통해서도 엄청난 효율을 얻을 수 있기 때문에 튜닝의 기본인 실.. 2020. 10. 4.
[Oracle] ON절과 WHERE절 조건 차이, JOIN 대상 차이 ON절과 WHERE절 차이 조인문을 사용할때 ON절을 이용해서 해당 조건으로 테이블 조인을 하게됩니다. 그런데 JOIN을 하기 위해 ON절이 아닌 WHERE절에 사용할때도 있습니다. 같은 내용같지만 확실히 두가지 절의 차이는 있습니다. 이번 글에서는 ON절과 WHERE절의 차이와 어떤 상황에서 각각 사용해야하는지 알아보도록 하겠습니다. SQL문 순서 ON JOIN 절이 추가된 SQL문의 순서는 FROM 절 다음으로 진행합니다. 즉 ON절은 WHERE절 보다 순서상으로 더 빠릅니다. 그럼 이게 실제 쿼리를 실행했을 때 어떤 차이가 있는지 확인해보겠습니다. WHERE절 ON절 실습 OS : Red Hat Enterprise Linux Server release 6.3 DB : Oracle 12.1.0.2 u.. 2020. 8. 9.