문제

가변 길이 문자 데이터가 있으며 SQL Server (2005) 데이터베이스에 저장하려고합니다. 텍스트 SQL 유형을 선택하는 방법에 대한 모범 사례를 배우거나 Varchar SQL 유형, 성능/발자국/기능의 장단점을 선택하고 싶습니다.

도움이 되었습니까?

해결책

SQL Server 2005 이상을 사용하는 경우 사용하십시오. varchar(MAX). 그만큼 text 데이터 유형은 더 이상 사용되지 않으며 새로운 개발 작업에 사용해서는 안됩니다. 에서 문서:

중요한

ntext , text, 그리고 image 미래 버전의 Microsoft SQL Server에서 데이터 유형이 제거됩니다. 새로운 개발 작업에서 이러한 데이터 유형을 사용하지 말고 현재 사용하는 응용 프로그램을 수정할 계획입니다. 사용 Nvarchar (Max), varchar (max), 그리고 varbinary (max) 대신에.

다른 팁

TEXT 큰 문자열 데이터에 사용됩니다. 필드의 길이가 특정 임계 값을 발표하면 텍스트가 줄 밖으로 저장됩니다.

VARCHAR 항상 줄에 저장되며 한계가 있습니다. 8000 캐릭터. 당신이 만들려고한다면 VARCHAR(x), 어디 x> 8000, 오류가 발생합니다.

서버 : MSG 131, 레벨 15, 상태 3, 라인 1

'varchar'유형에 주어진 크기 ()는 모든 데이터 유형 (8000)에 허용되는 최대 값을 초과합니다.

이러한 길이 제한은 우려되지 않습니다 VARCHAR(MAX) 안에 SQL Server 2005, 그것은 행으로 저장 될 수 있습니다. TEXT.

주목하십시오 MAX 여기서 일종의 일정이 아닙니다. VARCHAR 그리고 VARCHAR(MAX) 매우 다른 유형이며 후자는 매우 가깝습니다. TEXT.

이전 버전에서 SQL 서버 당신은 액세스 할 수 없습니다 TEXT 직접, 당신은만을 얻을 수 있습니다 TEXTPTR 그리고 그것을 사용하십시오 READTEXT 그리고 WRITETEXT 기능.

~ 안에 SQL Server 2005 직접 액세스 할 수 있습니다 TEXT 열 (여전히 명시적인 캐스트가 필요하지만 VARCHAR 그들에게 값을 할당하려면).

TEXT 좋다 :

  • 데이터베이스에 큰 텍스트를 저장 해야하는 경우
  • 열의 값을 검색하지 않은 경우
  • 이 열을 거의 선택하지 않고 결합하지 않는 경우.

VARCHAR 좋다 :

  • 작은 줄을 저장하는 경우
  • 문자열 값을 검색하는 경우
  • 항상 선택하거나 조인으로 사용하는 경우.

에 의해 선택 여기서는 열의 값을 반환하는 쿼리를 발행한다는 의미입니다.

에 의해 수색 여기서는 결과가 TEXT 또는 VARCHAR 열. 여기에는 어떤 사용을 사용하는 것이 포함됩니다 JOIN 또는 WHERE 상태.

로서 TEXT 줄 밖으로 저장되며 쿼리는 TEXT 열은 일반적으로 더 빠릅니다.

무엇의 예 TEXT 좋은 것 :

  • 블로그 댓글
  • 위키 페이지
  • 코드 소스

무엇의 예 VARCHAR 좋은 것 :

  • 사용자 이름
  • 페이지 제목
  • 파일 이름

경험상, 당신이 필요하다면 텍스트 가치를 초과 할 필요가 있다면 200 캐릭터 그리고 이 열에 가입을 사용하지 마십시오 TEXT.

그렇지 않으면 사용하십시오 VARCHAR.

추신 동일하게 적용됩니다 UNICODE 활성화 NTEXT 그리고 NVARCHAR 또한 위의 예제에 사용해야합니다.

pps 동일하게 적용됩니다 VARCHAR(MAX) 그리고 NVARCHAR(MAX) 저것 SQL Server 2005+ 대신 사용합니다 TEXT 그리고 NTEXT. 활성화해야합니다 large value types out of row 그들과 함께 sp_tableoption 원한다면 항상 줄 밖으로 저장되기를 원한다면.

위에서 언급했듯이 여기, TEXT 향후 릴리스에서 더 이상 사용되지 않을 것입니다.

그만큼 text in row 옵션은 향후 버전에서 제거됩니다 SQL 서버. 새로운 개발 작업 에서이 옵션을 사용하지 않고 현재 사용중인 응용 프로그램을 수정할 계획입니다. text in row. 사용하여 큰 데이터를 저장하는 것이 좋습니다. varchar(max), nvarchar(max), 또는 varbinary(max) 데이터 유형. 이러한 데이터 유형의 인랑 및 외부 동작을 제어하려면 large value types out of row 옵션.

SQL Server 2005에서 새로운 데이터 유형이 소개되었습니다. varchar(max) 그리고 nvarchar(max)그들은 이전 텍스트 유형의 장점을 가지고 있습니다. 2GB의 데이터를 포함 할 수 있지만 대부분의 장점도 있습니다. varchar 그리고 nvarchar. 이러한 장점 중에는 substring ()과 같은 문자열 조작 함수를 사용하는 기능이 있습니다.

또한 Varchar (Max)는 테이블 (디스크/메모리) 공간에 저장되고 크기는 8kb 미만입니다. 더 많은 데이터를 현장에 배치 할 때만 테이블의 공간에서 저장됩니다. 테이블의 공간에 저장된 데이터는 (보통) 더 빨리 검색됩니다.

요컨대, 더 나은 대안이 있기 때문에 텍스트를 사용하지 마십시오. (n) varchar (max). 일반 바르 차가 충분히 크지 않은 경우 바르 차 (Max) 만 사용하십시오.

언급 한 바와 같이, 텍스트 데이터 유형에서 하위 문자열을 사용할 수 있지만 텍스트 필드에는 8000 문자 미만이 포함되어 있습니다.

MS 2008에서 몇 가지 주요 변경 사항이있었습니다.> 사용 할 데이터 유형에 대한 결정을 내릴 때 다음 기사를 고려할 가치가있을 수 있습니다.http://msdn.microsoft.com/en-us/library/ms143432.aspx

바이트당

  1. varchar (max), varbinary (max), xml, 텍스트 또는 이미지 열 2^31-1 2^31-1
  2. NVARCHAR (MAX) 열 2^30-1 2^30-1
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top