반응형

 

SQL에서 컬럼 타입은 다양하다.

그 중에서도 NVARCHAR(MAX) / VARCHAR(MAX) 는 데이터의 길이가 정확하지 않을때 많이 사용한다.

예를 들어서, 게시판 작성시 내용을 NVARCHAR(MAX) 타입을 많이 사용한다.

 

매번 테이블에서 SELECT(조회) 할때, 당연시하게 *(모든 컬럼)을 사용해서 조회해왔다.

 

많은 행을 조회할때 컬럼의 사이즈도 조회하는 속도에 영향을 준다는 것을 알게 되었다.

 

 

실운영하고 있는 테이블에서 조회를 해봤다.

NVARCHAR(MAX)가 포함되었을때와 포함되어있지 않았을때.

그 결과 위에와 같은 결과를 얻을 수 있었다.

 

만오천개 데이터를 가져오는 쿼리이다.

  • NVARCHAR(MAX)가 포함되었을때 : 약 3초
  • NVARCHAR(MAX)가 포함되지 않았을때 : 약 1초

대략 3초정도 차이가 난다. NVARCHAR(MAX) 컬럼 하나때문에.

 

우리가 쉽게 실수 할 수 있는 예제가 페이징 처리할때이다.

일반적으로 페이징 처리할때, 해당 조건에 맞는 데이터를 모두 조회하고 난 다음

해당 페이지 번호에 맞는 데이터를 가져오는 프로세스가 일반적이다.

이때, 전체 데이터를 가져올때 NVARCHAR(MAX)가 있으면 조회하는 속도에 영향을 미칠 수 있으므로

NVARCHAR(MAX)가 포함되어있는 컬럼 조회는 신중하게 해야 한다.

 

페이징시에도 가급적이면 NVARCHAR(MAX)가 포함된 컬럼은 조회하는 것을 지양하는 것이 좋다.

꼭 필요한 경우에는, 전체데이터를 가져올때에는 제외하고

해당 페이지 번호에 맞는 데이터를 가져온 후 조인을 이용해서 NVARCHAR(MAX)를 가져오는 것도 하나의 방법이라고 생각한다.

 

반응형

+ Recent posts