본문 바로가기
반응형

Optimizer3

[Oracle] 인덱스 힌트/ 옵티마이저 힌트 사용방법 (주석, 튜닝) 기본적으로 쿼리를 실행하면 DBMS 내의 옵티마이저가 여러개의 실행 계획을 만들고 그 안에서 제일 비용이 적게 소요되는 실행계획을 선택하여 실행이 된다. 하지만 옵티마이저를 믿지 못하거나 특정 방법으로 실행계획을 하고 싶을 시에는 옵티마이저 힌트를 사용하면 된다. 기본적으로 사용법은 아래와 같다. 위에 주석 부분에 사용을 하고 자주 사용되는 값들은 아래와 같다. 1. OPTIMIZER_MODE 지정가능 값 /*+ ALL_ROWS */ 목적 : Best Throughput 용 도 : 전체 RESOURCE 소비를 최소화시키기 위한 힌트. Cost-Based 접근방식으로 ALL_ROWS는 Full Table Scan을 선호하며 CBO(Cost Based Optimization)는 default로 ALL_ROW.. 2023. 11. 25.
데이터베이스 최적화 방법 2 (23.04.28) 지난 포스팅은 외부에서 받아온 최적화 방법들이 정리 되었었다. 자세한 내용은 아래 참고 포스팅 참고 바란다. 이번 포스팅에서는 내가 정리한 내용을 추가로 적어두려고 한다. (중복된 내용 존재할수 있음) - JOIN NL -> 인덱스 있을떄 sort merge -> 동등 / 비동등 일떄 hahs -> 동등일때 - function 은 return 필수 / procedure는 필수 아님 - findbyid 할 경우 엔티티 전체가 나와서 만약 id 만 원할 경우나 인덱스 있을경우를 원하면 해당 컬럼만 다루면 테이블 스캔 안하고 인덱스 스캔만 - 만약 where a.id = b.id and a.id=1 인걸 inlineview로 넣으면 b에도 10을 넣어주기 - x+2>5 보단 바인딩 변수는 혼자 두기 x>3 으.. 2023. 4. 29.
데이터베이스 최적화 방법 1 (23.04.27) 옵티마이저의 종류와 DBMS 종류에 따라 다를순 있지만 일반적인 쿼리 튜닝방법에 대해서 정리한 글을 공유하려한다. 저장해두고 보기 위해 글 사용합니다. OR 연산자의 사용을 피하라. 대부분의 경우에 WHERE 절의 조건에 OR 연산자를 가지고 있다면 SQL은 인덱스를 사용하지 않는다. 이러한 명령문은 두가지 방법으로 다시 작성할 수 있는데, 어떤 환경에서는 IN 연산자를 가지고 있는 조건으로 대치하거나 UNIO으로 연결된 두개의 SELECT 문을 사용하여 전체 명령문을 대치할 수 있다. 이렇게 대치하면 SQL은 인덱스를 사용할 것이다. 주의사항 : OR 연산자가 UNION으로 대체 될 때, 자동적으로 중복된 모든 행을 삭제한다. 원래의 SELECT 문에서 기본키를 포함하고 있다면 상관없다. WHERE H.. 2023. 4. 29.
반응형