#title SQL 튜닝의 3가지 관점 [[TableOfContents]] ==== SQL 튜닝의 3가지 관점 ==== * 쿼리 분석기를 통한 비용 조절 * 올바른 인덱스 사용 * 조인 순서 조정 * 힌트의 사용 * LOGIC 튜닝 * CASE WHEN 문 * OUTER JOIN * 프로시저 및 함수 * BATCH 작업 튜닝 * 최소 입/출력이 가능하게 조정 * LOOP내 쿼리는 최대한 튜닝 * 이용 가능한 자원을 적절히 사용하도록 조정 ==== 옵티마이저의 모드 ==== ORACLE의 옵티마이저의 경우 비용 기반의 옵티마이저와 규칙 기반의 옵티마이저를 모두 가지고 있다.(10g는 규칙기반의 옵티마이저를 버린다고 했다. 버렸나?) ORACLE의 비용기반 옵티마이저는 두 가지의 옵티마이저 모드를 가지고 있는데, 그것은 FIRST_ROW방식과 ALL_ROW방식이다. MSSQL SERVER는 비용기반의 옵티마이저만 지원한다. 기본적으로 MSSQL SERVER는 전체 결과를 리턴하기 위한 ALL_ROW방식을 사용한다. FIREST_ROW 방식은 OPTION(FAST N) 의 힌트를 주므로 해서 흉내를 낼 수 있다. MSSQL SERVER에서 대용량의 데이터베이스 처리시 OPTION(FAST N)을 붙이지 않으면 HASH JOIN, MERGER JOIN의 경향을 가지며, OPTION(FAST N)을 붙이면 NESTED LOOP JOIN의 경향을 가진다. (OPTION(FAST N)으로 붙이면 가끔씩 실행계획이 바뀌는 경우가 있음을 이야기 한다.)