320x100
320x100

1. 필요한 컬럼만 불러오기

: SELECT * 대신 필요한 컬럼만 선언

 

2. 조건부 컬럼 업데이트에는 UPDATE 대신 CASE 사용

: UPDATE WHERE로 업데이트를 수행할 경우 2개의 개별적인 트랜잭션이 되기 때문에 불필요한 작업이 발생한다

 

3. 큰 테이블 쿼리는 최소한으로 유지

: 크기가 큰 테이블에 대해서는 개별 작업으로 쿼리해야한다

: 큰 테이블에서 가져온 데이터를 메모리에 보관하고 다른 테이블에 대한 쿼리를 실행하면 작업 속도를 높일 수 있다

 

4. 데이터 사전 준비

: 테이블을 매번 조인하지 말고 어느정도는 인메모리 테이블을 사용해 속도를 높이자

 

5. 삭제와 업데이트는 일괄로 수행

: 삭제와 업데이트 작업의 경우 트랜잭션이 완료될때까지 테이블이 잠긴다

: 때문에 두 작업을 인터리빙 (끼워넣기) 할 수 있는 일괄(batch) 작업으로 처리하는 것이다

: 이렇게 하면 작업 도중에 다른 작업을 수행할 수 있게된다

 

6. 임시 테이블을 사용하여 커서 성능 개선

: 커서는 속도가 느리고 다른 작업을 차단하는 작업이지만, 사용해야 한다면 임시 테이블을 사용하여 완화할 수 있다

: 예를들어 테이블을 루프로 순환하면서 계산을 기반으로 열을 변경해야하는 경우 업데이트 하려는 후보데이터를 가져와 임시테이블에 넣고 해당 테이블을 순환한 다음 모든 업데이트를 하나의 작업에서 업데이트 하면된다

 

7. 스칼라 함수 보다는 테이블-값 함수 사용

: 테이블 값-함수와 CROSS APPLY 를 사용하면 성능을 올릴 수 있다

 

※ 스칼라 함수

: 0개 이상의 파라미터를 받아 단 하나의 값을 반환하는 함수

 

※ 테이블-값 함수

: 테이블을 반환하는 사용자 정의 함수 

 

8. 파티셔닝을 사용하여 큰 데이터 이동 방지

: 한 테이블을 다른 테이블로 지속적으로 아카이빙 한다면 INSERT/DELETE 대신에 SWITCH를 사용하여 테이블의 페이지를 아카이브 테이블에 할당하면 된다

 

9. 성능을 위해서는 저장 프로시저 사용, 편리함을 위해서는 ORM을 사용

: ORM을 사용하면 데이터베이스 코드를 훨씬 더 쉽고 유연하게 만들 수 있다

 

※ ORM (객체 관계 매퍼)

: 객체와 RDBMS의 데이터를 매핑하는 것

 

 

 

 

 

 

Reference

 

SQL 쿼리 속도를 높이는 9가지 방법

SQL은 데이터베이스 개발과 쿼리에 가장 많이 사용되는 언어지만 난해한 부분도 있다. 이럴 때 참고할 수 있는 빠른 SQL 쿼리를 쓰기 위한 9

www.itworld.co.kr

 

300x250
728x90