소트 머지 조인 조인 컬럼에 인덱스가 없을 때 대량 데이터 조인이어서 인덱스가 효과적이지 않을 때 옵티마이저는 NL 조인 대산 소트 머지 조인이나 해시 조인을 사용합니다 SGA VS PGA 오라클 공유 메모리 영역인 SGA 캐시 된 데이터는 여러 프로세스가 공유할 수는 있지만 한 번에 하나의 래치만 동작해서 해시를 하고 결과 셋을 줍니다 즉 여러 프...
SQL_튜닝_26
소스 https://gitlab.com/kimdongy1000/sqltuningproject 대량데이터 NL 조인 연습 이번 시간에는 대량 데이터를 넣고 한번 NL 조인 튜닝에 대해서 심층 분석을 해보자 간단 스키마 DROP TABLE Ex18_emp CREATE TABLE Ex18_emp( emp_code VARCHAR(100) PR...
SQL_튜닝_25
소스 https://gitlab.com/kimdongy1000/sqltuningproject NL 조인의 실행계획 제어 기본적으로 NL 조인을 제어할 때는 use_nl이라는 힌트를 사용합니다 SELECT /*+ ordered use_nl(C)*/ * FROM Ex17_emp_model E INNER JOIN Ex17_custom_model C ...
SQL_튜닝_24
들어가기 앞서 우리는 앞에서 단일 테이블에서 인덱스를 어떻게 할지 이에 대해서 상당히 많은 예제와 트레이서 로그를 활용해서 보았다 하지만 실무에서는 거의 대부분 테이블이 여러 개로 조인된 상태로 개발을 진행을 하게 된다 이번 시간부터는 조인 테이블에 대해서 알아보자 NL 조인 조인의 기본은 NL 조인이다 NL 조인은 인덱스를 이용하는 조인이기 때문에...
SQL_튜닝_23
인덱스 설계 자 우리는 앞에서 여러 예시를 통해서 인덱스를 통해서 쿼리의 속도 등을 알아보았다 이제 테이블의 인덱스를 설계할 수 있을까? 사실 이 정도 지식만으로 인덱스를 설계하는 것은 무리가 있다 이러한 전문성을 갖추려면 세밀한 인덱스 원리와 이론을 바탕으로 많이 고민을 해보아야 한다 이번 시간에는 그러한 내용을 다루어 볼 것이다 인덱스 설계가 어...
SQL_튜닝_22
간단스키마 drop table Ex14_saleList create table Ex14_SaleList( item varchar(20), saleMan varchar(10), saleDate varchar(6) ) CREATE INDEX Ex14_SaleList_idx1 ON Ex14_SaleL...
SQL_튜닝_21
비교 연산자 종류와 컬럼 순서에따른 군집성 테이블과 달리 인덱스에는 같은 값을 갖는 레코들이 서로 군집해 있다 그렇기에 동등 비교(=) 연산자로 조회하면 조건절을 만족하는 레코드는 모두 모여 있다 만약 하나를 누락하거나, 동등 비교 연산을 하지 않는 경우 만족하는 레코드는 서로 흩어진 상태가 된다 다음 그림과 쿼리를 한번 보자 소스 https://g...
SQL_튜닝_20
인덱스 스캔 효율성 인덱스 스캔 효율이 좋은지 나쁜지는 어떻게 알 수 있을까? 앞에서는 실행계획을 통해 알아보았다 이때는 단순 cost로 알아보았는데 이번에는 트레이서와 tkprof를 통해서 한번 알아보겠습니다 데이터는 이전 데이터 EX11_EMPLOYEE , EX12_EMPLOYEE를 활용하겠습니다 쿼리 SELECT * FROM EX11_EMPL...
SQL_튜닝_19
이번 시간에는 ROWID를 통해 데이터를 가져오는 고비용에 대해서 어떻게 대처할 것인지에 대한 테이블 설계에 대해서 알아보겠습니다 일반적인 테이블 옵티마이저가 인덱스 테이블을 서칭해서 ROWID를 가져와서 버퍼캐시를 먼저 보는데 이때 버퍼캐시에 원하는 데이터가 있으면 고비용으로 처리되는 게 아닙니다 하지만 버퍼캐시에 없어서 디스크로 가서 데이터를 찾...
SQL_튜닝_18
인덱스 컬럼 추가 튜닝의 목적은 랜덤 I/O를 줄이는데 목적이 있다 그 목적을 달성하기 위해서는 인덱스 컬럼을 추가하는 것이 그 출발점이다 예를 들어서 다음과 같은 데이터와 정보가 있다고 하자 소스 및 간단 스키마 https://gitlab.com/kimdongy1000/sqltuningproject Ex9_Employee sql 참조하시면됩니...