IT Log

[SQL Server] PROCEDURE 성능 개선 본문

SQL/SQL Server

[SQL Server] PROCEDURE 성능 개선

newly0513 2022. 2. 14. 10:26
728x90
반응형

성능 개선 사항 

  • 프로시저 본문에서 'SET NOCOUNT ON'을 사용
    > 출력이 최소 수준으로 유지
  • 스키마 이름을 사용
    > 개체이름 확인 처리시간 감소 및 권한/액세스 문제 방지
  • WHERE 및 JOIN 절에서 지정한 열을 함수로 묶지 않기
    > 묶일 경우, 비결정적 열이 되어 인덱스를 사용할 수 없음
  • 대량의 행을 반환하는 SELECT문은 스칼라 함수 사용하지 않기
    > 스칼라 함수는 모든 행에 적용되어 행 기반 처리와 비슷한 동작이 발생하여 성능저하됨
  • SELECT * 사용을 피하기
    > DB엔진 오류 방지
  • 너무 많은 데이터를 처리하거나 반환하지 않기
    > 네트워크를 통해 불필요한 데이터를 보내지 않아 효율적
  • BEGIN/COMMIT 트랜잭션을 사용하여 명시적 트랜잭션을 사용하고, 짧게 유지
    > 트랜잭션이 길면 레코드 잠금시간이 길어지고 교착상태가 발생할 확률이 높아짐
  • 오류처리에 TRY...CATCH기능 사용
    > 전체 블록이 캡슐화되어, 성능 오버헤드와 프로그래밍이 줄어들고, 오류 보고서가 정확해짐
  • TABLE DDL문이 참조하는 모든 TABLE 열에 DEFAULT 키워드를 사용
    > NULL값을 허용하지 않는 열에 NULL이 전달되지 않음
  • 임시 TABLE의 각 열에 NULL 또는 NOT NULL을 사용
    > 프로시저를 실행하는 모든 연결에 대해 NULL 허용여부가 동일한 임시 테이블이 생성됨
  • NULL값을 변환하는 수정문을 사용하고, NULL 값을 포함하는 행을 쿼리에서 제거하는 논리를 포함
    > NULL은 결과 집합을 쿼리하거나 AGGREGATE 함수를 사용할 때 예기치 않은 동작을 야기
  • 고유 값에 대한 특별한 요구사항이 없을시, UNION 또는 OR 연산자 대신 UNION ALL 연산자를 사용
    > 중복되는 항목이 결과 집합에서 필터링되지 않으므로 처리 오버헤드가 감소

 


참조 URL : https://docs.microsoft.com/ko-kr/sql/t-sql/statements/create-procedure-transact-sql?view=sql-server-ver15#arguments

728x90
반응형

'SQL > SQL Server' 카테고리의 다른 글

[SQL Server] CREATE PROCEDURE  (0) 2022.02.14
[SQL Server] 흐름제어(Control-of-Flow)  (0) 2022.02.08
[SQL Server] Functions - 논리 함수  (0) 2022.02.08
[SQL Server] Functions - Cursor 함수  (0) 2022.01.25
[SQL Server] CURSOR  (0) 2022.01.25
Comments