본문 바로가기
DB & SQL

SQL 문장 응답속도 향상을 위한 고려 사항

by akasha.park 2023. 3. 27.

1. SQL은 ACCESS PATH에 따라 PERFORMANCE 차이가 매우 큼

2. SQL은 그 자체가 하나의 APPLICATION

3. SQL은 집합 개념을 바탕으로한 비절차형 언어

4. 동일한 실행 결과를 추출하는 다양한 형태의 SQL이 존재

5. SQL은 실행결과보다 처리과정에 유의해서 사용해야 한다.

 

 

[INDEX의 적용 기준]

1. 6 블럭 이상의 테이블에 적용(6블럭이하는 연결고리만)

2. 컬럼의 분포도가 10~15% 이내인 경우 적용

3. 분포도가 범위이내더라도 절대량이 많은 경우에는 단일 테이블 클러스터링을 검토할 것

4. 분포도가 범위 이상이더라도 부분 범위처리를 목적으로 하는 경우에는 적용

5. 인덱스만을 사용하여 요구를 해결하고자 하는 경우는 분포도가 나쁘더라도 적용할 수 있음

 

 

[INDEX 선정 기준]

1. 분포도가 좋은 컬럼은 단독적으로 생성하여여 활용도를 향상시킴

2. 자주 조합하여 사용되는 경우는 결합 INDEX 생성

3. 가능한 수정이 빈번하지 않는 컬럼

4. 기본키  및 외부키(조인의 연결고리가 되는 컬럼)

5. 결합 인덱스의 컬럼 순서 선정에 주의

6. 실제 조사된 액세스 종류를 토대로 선정 및 검증

 

[INDEX의 선정시 고려 사항]

1. 새로 추가된 INDEX는 기존 엑세스 경로에 영향을 미칠 수 있음

2. 지나치게 많은 INDEX는 오버헤드 발생

3. 넓은 범위를 INDEX로 처리시 많은 오버헤드 발생

4. 옵티마이저를 위한 통계데이타를 주기적으로 갱신

5. INDEX의 개수는 테이블의 사용형태에 따라 적절히 생성

6. 부포도가 양호한 컬럼도 처리범위에 따라 분포도가 나빠질 수 있음

 

[INDEX 선정 절차]

1. 해당 테이블의 액세스 유형 조사

2. 대상 컬럼의 선정 및 분포도 분석

3. 반복수행되는 액세스 경로 Critical Access Path 해결

4. 클러스터링 검토

5. INDEX 컬럼의 조합 및 순서의 결정

6. 시험생성 및 테스트

7. 수정이 필요한 애플리케이션 조사 및 수정