VARCHAR(MAX)/NVARCHAR(MAX)
열을 사용할 때 데이터가 행 외부에 저장 된다는 것을 알고 있습니다 ...
실제로, large value types out of row
옵션을 사용하여 설정할 수있는 옵션 설정에 따라 다릅니다 sp_tableoption
. 로부터 문서 :
기본 입니다 MAX
값을 저장할 수 의 행 가 맞는 경우, 8000 바이트까지. sp_tableoption
기본값을 변경 하지 않은 경우 MAX
데이터는 행 안에 저장 될 가능성이 높습니다.
즉, MAX
8000 바이트를 초과하지 않는 값에 데이터 유형 을 사용하는 것은 좋지 않습니다. 대신 비 MAX 유형을 사용하십시오. MAX
SQL Server는 최대 2GB 크기의 데이터를 처리 할 수 있도록 준비해야하므로 다른 모든 것 외에도 유형을 처리 할 때 성능이 크게 저하되는 경우가 많습니다 .
각 필드는 행 외부에 저장됩니까 아니면 최대 필드에만 저장됩니까?
MAX
그들 만 . 또한 이전 행 내 MAX
열이 행 외부로 이동되면 해당 행의 해당 열만 영향을받습니다. 행 내부에서 행 외부 LOB
구조 에 대한 포인터로 바뀝니다 . MAX가 아닌 열이 행 밖으로 이동할 수있는 환경도 있습니다.
테이블의 클러스터형 인덱스를 사용하여 전체 레코드를 읽는 경우 행 외부에 저장된 필드도 읽습니까?
클러스터형 인덱스를 스캔하면 행 내 데이터 만 통과합니다. 쿼리에 행 외부 데이터가 필요한 경우 행 내부 포인터를 사용하여 조회합니다.