IT/MSSql

[MSSQL] 쿼리 속도 향상을 위한 팁 - 1

뉴비 출근러 2025. 4. 18. 10:29
728x90
반응형

📌 속도 최적화를 위한 SQL 쿼리 기법

 

1. WITH(NOLOCK) (락을 무시하고 읽기)

• 이미 설명한 대로, ** WITH(NOLOCK) **은 데이터를 락을 걸지 않고 읽기 때문에 동시성이 매우 높은 환경에서 성능을 크게 향상시킬 수 있다.

• 다만, 정확성이 떨어질 수 있기 때문에 읽기 전용 쿼리에서만 사용하는 것이 좋다.

SELECT * FROM Folders WITH(NOLOCK)

 

 

2. INDEX 활용

• **인덱스(Index)**를 적절히 사용하면 데이터 검색 속도가 비약적으로 빨라진다.

검색 쿼리정렬(ORDER BY)이 자주 사용되는 컬럼에 인덱스를 추가하는 것이 중요.

◦ 인덱스를 생성할 때 쿼리에서 자주 사용되는 컬럼을 기준으로 인덱스를 만들면 검색 성능이 좋아진다.

CREATE INDEX idx_FolderName ON Folders (FolderName);

주의: 인덱스는 데이터 삽입, 업데이트 속도를 느리게 할 수 있으므로, 주의해서 사용해야 한다.

 

 

3. TOP을 사용하여 데이터 제한

• 쿼리에서 필요한 데이터최소한으로 조회하도록 제한하는 것도 좋은 방법.

• 예를 들어, 상위 10개 데이터만 필요하면 TOP 10을 사용해서 성능을 개선할 수 있다.

SELECT TOP 10 * FROM Folders ORDER BY FolderName

• 이 방법은 불필요한 데이터를 불러오는 시간을 줄여주기 때문에 성능 개선에 도움이 된다.

 

 

4. INNER JOINLEFT JOIN  최적화

JOIN을 사용할 때 불필요한 LEFT JOIN을 피하고, INNER JOIN을 사용하는 것이 성능에 유리하다.

INNER JOIN은 두 테이블에서 매칭되는 데이터만 가져오기 때문에 성능이 더 빠르다.

SELECT F.FolderID, F.FolderName FROM Folders F INNER JOIN Files FL ON F.FolderID = FL.FolderID;

• LEFT JOIN을 사용하면 NULL 값이 포함된 결과가 나오기 때문에 더 많은 데이터를 처리할 수 있어 성능에 악영향을 미칠 수 있다.

• JOIN을 할 때는 크기가 작은 테이블을 먼저 JOIN하는게 성능에 더 좋다.

SELECT F.FolderID, F.FolderName From Folders F INNER JOIN Order OR ON F.FolderID = OR.FolderID
728x90
반응형