SQL Server에서 varchar(MAX) 대 TEXT 사용
그 신문을 읽었습니다.VARCHAR(MAX)
유형할 수 은 이유형은(2GB 저수를있할장음다데터좋니데)의 됩니다.TEXT
SQL Server 2005 및 Next SQL SERVER 전터이유형니다입버데의▁sql다니유▁next입형.
열에서 문자열을 검색하려면 어떤 작업이 더 빠릅니까?
사용 사용
LIKE
에대조항에VARCHAR(MAX)
칼럼?WHERE COL1 LIKE '%search string%'
TEXT
열을 열고 이 열에 전체 텍스트 색인/카탈로그를 놓은 다음, 를 사용하여 검색합니다.CONTAINS
조항?WHERE CONTAINS (Col1, 'MyToken')
그VARCHAR(MAX)
은 ▁forment의 입니다.TEXT
은 기적인차은점이본라는 입니다.TEXT
type은 bob에 저장합니다.VARCHAR(MAX)
type은 8k 제한을 초과하지 않는 한 행에 데이터를 직접 저장하려고 시도하며, 이 시점에서 데이터를 Blob에 저장합니다.
LIKE 문을 사용하는 것은 두 데이터 유형 간에 동일합니다.은 다음과 같습니다.VARCHAR(MAX)
당신에게 주는 것은 그것이 또한 사용될 수 있다는 것입니다.=
그리고.GROUP BY
여느 때와 마찬가지로VARCHAR
열은 다음과 같을 수 있습니다.그러나 데이터가 많은 경우 이러한 방법을 사용하면 성능 문제가 크게 발생합니다.
▁use를 사용해야 .LIKE
검색하거나 전체 텍스트 인덱싱을 사용해야 하는 경우CONTAINS
이 질문은 다음과 상관없이 동일합니다.VARCHAR(MAX)
또는TEXT
.
많은 양의 텍스트를 검색하고 성능이 중요한 경우 전체 텍스트 색인을 사용해야 합니다.
LIKE
구현이 간편하고 소량의 데이터에 적합한 경우가 많지만 인덱스를 사용할 수 없어 대용량 데이터의 성능이 매우 떨어집니다.
큰 텍스트의 경우 전체 텍스트 색인이 훨씬 빠릅니다.그러나 전체 텍스트 색인을 만들 수 있습니다. varchar(max)
뿐만 아니라.
- 기본 정의
TEXT
그리고.VarChar(MAX)
는 최대 2,147,483,647개의 비유니코드 문자를 저장할 수 있는 비유니코드 대형 가변 길이 문자 데이터 유형입니다(즉, 최대 저장 용량은 2GB).
- 어떤 것을 사용해야 합니까?
MSDN에 따르면, Microsoft는 다음과 같은 기능을 사용하지 않을 것을 제안하고 있습니다.TEXT
SQL Server의 향후 버전에서 제거될 데이터 유형입니다. VarChar(MAX)
는 큰 문자열 값을 저장하기 위해 제안된 데이터 유형입니다.TEXT
데이터 형식
- 행 내 또는 행 외 스토리지
- 터의 TEXT
유형 열은 별도의 LOB 데이터 페이지에 행 밖으로 저장됩니다.테이블 데이터 페이지의 행에는 실제 데이터가 있는 LOB 데이터 페이지에 대한 16바이트 포인터만 있습니다.의 .VarChar(MAX)
형식 열이 8,000바이트 이하이면 연속적으로 저장됩니다.만약 a의 값인 경우VarChar(MAX)
열이 8000바이트보다 크면VarChar(MAX)
열 값은 별도의 LOB 데이터 페이지에 저장되며 행에는 실제 데이터가 있는 LOB 데이터 페이지에 대한 16바이트 포인터만 있습니다.그래서 "연쇄"VarChar(MAX)
검색 및 검색에 유용합니다.
- 지원/지원되지 않는 기능
함수, 및 일부문함수는, .TEXT
에서 합니다. 그러나 그들은 작업을 합니다.VarChar(MAX)
열을 입력합니다.
=
산와자같의VarChar(MAX)
columnGROUP BY
에 관한VarChar(MAX)
column
- 시스템 IO 고려 사항
아시다시피,VarChar(MAX)
유형 열 값은 값의 길이가 8,000바이트보다 크거나 행에 공간이 충분하지 않은 경우에만 열 밖에 저장됩니다. 그렇지 않으면 열에 저장됩니다. 만약에 그서만대값부저들있다에 이라면,VarChar(MAX)
행이 일정하지 검색 동작은 "" " " " " " " " "와합니다.TEXT
열을 입력합니다.
이 분의저경우된에 되어 있다면,VarChar(MAX)
LOB 열 값이 비 LOB 열 값이 저장된 동일한 데이터 페이지에 연속으로 저장되므로 LOB 열이 포함되지 않은 데이터를 검색하려면 더 많은 데이터 페이지를 읽어야 합니다.하지만 만약에SELECT
페이지 가 쿼에리 LOB 이되있다보다 . 그러면 데이터 검색을 위해 읽을 페이지 수가 더 적습니다.TEXT
열을 입력합니다.
결론
사용하다VarChar(MAX)
유형아닌이 TEXT
더 나은 성능을 위해.
텍스트 필드를 텍스트에서 막대로 변환하지 않고는 텍스트 필드를 검색할 수 없습니다.
DECLARE @table TABLE (a text)
INSERT INTO @table VALUES ('a')
INSERT INTO @table VALUES ('a')
INSERT INTO @table VALUES ('b')
INSERT INTO @table VALUES ('c')
INSERT INTO @table VALUES ('d')
SELECT *
FROM @table
WHERE a = 'a'
그러면 다음과 같은 오류가 표시됩니다.
유형은 다음과 같습니다.
text
그리고.varchar
연산자와 동일한 값이 호환되지 않습니다.
반면에 이것은 그렇지 않습니다.
DECLARE @table TABLE (a varchar(max))
재있게미,,LIKE
여전히 작동합니다.
WHERE a LIKE '%a%'
MS Access(특히 2003과 같은 이전 버전)를 사용하는 경우 강제로 사용해야 합니다.TEXT
Access를 은 "SQL Server"입니다.nvarchar(MAX)
하는 반면, 스의메필드모로반면액, 세면▁as.TEXT
메모 필드로 인식됩니다.
언급URL : https://stackoverflow.com/questions/834788/using-varcharmax-vs-text-on-sql-server
'source' 카테고리의 다른 글
Windows에서 현재 localhost의 포트를 사용하고 있는 프로세스를 중지하려면 어떻게 해야 합니까? (0) | 2023.04.27 |
---|---|
엑셀에서 값을 범위로 제한하려면 어떻게 해야 합니까? (0) | 2023.04.27 |
Angular의 canLoad와 canActivated의 차이는 무엇입니까? (0) | 2023.04.27 |
Bash 스크립트에 대한 매개 변수 유효성 검사 (0) | 2023.04.27 |
탐색 모음을 포함하여 무엇보다도 UI 보기 (0) | 2023.04.27 |