source

varchar(MAX)는 항상 권장됩니까?

factcode 2023. 4. 9. 22:26
반응형

varchar(MAX)는 항상 권장됩니까?

SQL Server에 대해서는 이해했습니다.

  • var메모리 할당이 느리다는 것을 의미합니다.즉, (삽입시에) 데이터에 정확하게 들어맞습니다.

  • MAX크기 제한이 없음을 의미합니다.

그럼 항상 사용하는 것이 좋은가요?MAX사용할 때varchar어차피 전체 사이즈를 할당하지 않으니?

이 DB 열에 대해 제약 조건이 있는 경우에만 일정한 크기를 사용해야 합니까?

SO User @Remus Rusanu의 이 주제에 대한 매우 좋은 기사가 있습니다.여기 제가 훔친 토막이 있습니다.다 읽어보시길 권해드립니다.

MAX 타입(varchar, nvarchar 및 varbinary)을 처리하는 코드 패스는 대응하는 비최대 길이 타입을 처리하는 코드 패스와 다릅니다.non-max 유형은 내부적으로 일반적인 포인터 및 길이 구조로 나타낼 수 있습니다.그러나 최대 2Gb까지 확장될 수 있기 때문에 max type은 연속된 메모리 영역으로 내부에 저장할 수 없습니다.따라서 COM의 IStream과 마찬가지로 스트리밍 인터페이스로 표현해야 합니다.이 작업은 스트리밍 인터페이스 상에서 더 복잡하기 때문에 간단한 할당 및 비교를 포함한 최대 유형을 포함하는 모든 작업으로 이어집니다.가장 큰 영향은 max-type 변수를 할당 및 할당하는 코드(첫 번째 테스트)에서 볼 수 있지만, 그 영향은 모든 작업에서 볼 수 있습니다.

이 기사에서는 varchar(n)를 사용하면 일반적으로 성능이 향상된다는 것을 보여주는 몇 가지 예를 보여 줍니다.

전체 기사는 여기에서 찾을 수 있습니다.

좋은 답변은 이쪽에서 확인하세요.

varchar(n)를 사용해야 합니까, 아니면 varchar(MAX)를 사용해야 합니까?

즉, 스토리지 측면에서는 동일하지만 쿼리 최적화 측면에서는 varchar(N)를 사용하는 것이 좋습니다.

Microsoft가 권장하는 내용은 다음과 같습니다.

  • 열 데이터 항목의 크기가 일정할 경우 char를 사용합니다.
  • 열 데이터 항목의 크기가 크게 다를 경우 varchar를 사용하십시오.
  • 열 데이터 엔트리의 크기가 크게 달라 크기가 8,000바이트를 초과할 수 있는 경우 varchar(max)를 사용합니다.

레퍼런스

이 문제에 대해 아주 명확하게 말하면, 대답은 NO입니다.항상 varchar(N)를 사용하는 것이 좋습니다.크기가 변하지 않는 것을 알고 있는 경우는 char(N)를 사용합니다.MAX 유형은 대부분의 네이티브 SQL 기능을 지원하지 않으므로 인덱스를 추가하거나 조인 또는 효과적인 검색을 수행할 수 없습니다.참고로 이것이 SQL Server에 전체 텍스트 검색 기능이 존재하는 이유 중 하나입니다.

또한 varchar(max) 필드는 varchar(max) 필드를 포함하는 테이블 전체에 대해 온라인 인덱스를 실행할 수 없도록 합니다.이것은 시스템의 퍼포먼스에 큰 영향을 줍니다.

varchar(max)는 필드의 크기가 8K를 넘는 것으로 알려진 경우에만 사용해야 합니다.다른 모든 경우 크기를 지정해야 합니다.그렇게 하지 않으면 설계가 불량하고 가장 사소한 시스템을 제외한 모든 시스템에서 성능 문제가 발생합니다.

참고 자료:

언급URL : https://stackoverflow.com/questions/8512164/is-varcharmax-always-preferable

반응형