2011-09-07 3 views
2

SQL Server 2008 R2를 사용하고 있습니다.최대 행 크기 (VarChar (MAX))

10 개의 varchar (1000) 열이있는 테이블이 있고 각 열에 실제로 1000자를 넣고 해당 행을 INSERT하려고하면 SQL Server의 행 제한 인 8K로 인해 오류가 발생합니다. 그러나 해당 열을 varchar (max)로 정의하면 오류가 발생합니까?

다음 시나리오는 무엇입니까? 나는 최대 8 개의 varchar (1000) 열을 가지고 있는데, 하나의 테이블에 두 개의 varchar (최대) 열이 있고 그 중 일부 문자가 들어 있습니다. 오류가 발생합니까?

나는 대답이 '나는 어떤 경우에도 오류가 발생하지 않을 것이라고 생각하지만, 나는 확신 할 필요가있다.

답변

4

원래 가정은 SQL 서버부터 잘못 2005

그냥이 비를 피하기 위해 varchar(max)로 열이 선언보다는 varchar(1000) 할 이유가 없다, 그래서 varchar(1000) 경우 offrow 저장된 일부 열로 끝날 것 현존하는 문제.

SQL Server에서 데이터 페이지의 포인터를 따를 필요가 있으므로 offroll 데이터를 저장하는 데 성능 오버 헤드가 발생합니다. 따라서 일반적인 경우가 될 것으로 예상되는 경우 테이블을 수직적으로 파티션하는 것이 좋습니다.

+0

나는 사용자가 키를 선택할 수있는 문자의 양을 제한하고 싶지 않은 긴 설명 열에 대해 varchar (최대)를 많이 사용합니다. 나는 그들 중 누구도 아직 8K를 초과했다는 것을 모르지만, 나는 어떤 성과에 주목하지 않았다. 실제 오버 헤드에 8K를 초과하는 경우 성능 오버 헤드의 대부분이 상상됩니다. 빠른 답변 주셔서 감사합니다. –

관련 문제