programing

varchar와 nvarchar의 차이점은 무엇입니까?

yoursource 2023. 4. 7. 22:20
반응형

varchar와 nvarchar의 차이점은 무엇입니까?

인가?nvarchar티티티 트자 ?자? 자??? ???만약 그렇다면, 스토리지 문제를 제외하고, 이 제품을 사용하는 것이 정말로 중요합니까?varchars

nvarchar유니코드를 사용하다 a.varchar8번입니다.라고 도 있다varchar공간을 덜 차지하기 때문에 사용해야 합니다.★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★코드 페이지 비호환성은 골칫거리이며 Unicode는 코드 페이지 문제를 해결합니다.요즘의 저렴한 디스크와 메모리 덕분에 코드 페이지를 만지작거리며 시간을 낭비할 필요가 없어졌습니다.

현대의 모든 운영 체제 및 개발 플랫폼은 내부적으로 Unicode를 사용합니다.「」를 사용해 .nvarcharvarchar에서는, 데이타베이스로부터 읽거나 데이타베이스에 쓸 때마다 부호화 변환이 행해지지 않게 됩니다.변환에는 시간이 걸리고 오류가 발생하기 쉽습니다.변환 오류로부터의 복구는 간단한 문제가 아닙니다.

ASCII만을 사용하는 어플리케이션과 인터페이스 하고 있는 경우라도, 데이터베이스에서 Unicode를 사용하는 것을 추천합니다.OS 및 데이터베이스 대조 알고리즘은 Unicode에서 더 잘 작동합니다.Unicode는 다른 시스템과 인터페이스 할 때 변환 문제를 방지합니다.그리고 당신은 미래를 준비하게 될 것입니다.또한 전체 Unicode 스토리지의 이점을 누리는 동안에도 유지해야 하는 레거시 시스템에 대해 데이터가 7비트 ASCII로 제한되는지 확인할 수 있습니다.

바카: 가변 길이의 유니코드 이외의 문자 데이터.데이터베이스 조합에 따라 데이터가 저장되는 코드 페이지가 결정됩니다.

nvarchar: 가변 길이의 유니코드 문자 데이터.비교를 위해 데이터베이스 조합에 의존합니다.

이 지식을 바탕으로 입력 데이터와 일치하는 데이터를 사용합니다(ASCII v. Unicode).

저는 항상 nvarchar를 사용합니다.왜냐하면 구축 중인 모든 데이터가 nvarchar에 버틸 수 있기 때문입니다.제가 nvarchar를 사용했기 때문에 CMS 시스템이 실수로 중국어를 하게 되었습니다.오늘날 새로운 애플리케이션은 필요한 공간의 크기에 크게 신경 쓰지 않습니다.

오라클NLS_CHARACTERSET, NLS_CHARACTERSET입니다. 이 문의를 알 수 예요.SELECT value$ FROM sys.props$ WHERE name = 'NLS_CHARACTERSET'.

NLS_CHARACTERSET가 UTF8과 같은 Unicode 부호화일 경우 좋습니다.VARCHAR와 NVARCHAR의 사용은 거의 동일합니다.이제 그만 읽고 그냥 해.그렇지 않은 경우 또는 Oracle 문자 집합을 제어할 수 없는 경우 계속 읽어 보십시오.

VARCHAR : 데이터는 NLS_CHARACTERSET 인코딩으로 저장됩니다.동일한 서버에 다른 데이터베이스 인스턴스가 있는 경우 설정을 공유해야 하므로 해당 인스턴스로 인해 제한될 수 있습니다.또한 그 반대의 경우도 마찬가지입니다.이러한 필드에는 해당 문자 집합을 사용하여 인코딩할 수 있는 데이터만 저장할 수 있습니다.예를 들어 문자 집합이 MS-1252일 경우 저장할 수 있는 문자는 영어 문자, 악센트 문자 몇 개, 기타 문자(€ 및 -- 등)뿐입니다.이 어플리케이션은 세계 어느 곳에서도 조작할 수 없는 소수의 지역에서만 유효합니다.이러한 이유로, 그것은 나쁜 아이디어로 여겨진다.

NVARCHAR: 데이터는 Unicode 인코딩으로 저장됩니다.모든 언어가 지원됩니다.좋은 아이디어

스토리지 공간은 어떻습니까?문자 세트/인코딩은 특정 로케일에 대해 커스텀 설계되었기 때문에 VARCHAR은 일반적으로 효율적입니다.NVARCHAR 필드는 아이러니컬하게도 NLS 설정에 근거해 UTF-8 또는 UTF-16 인코딩으로 저장됩니다.UTF-8은 아시아 언어를 지원하면서도 "서양" 언어에 매우 효율적입니다.UTF-16은 아시아 언어에서 매우 효율적이며 "서양" 언어를 지원합니다.스토리지 공간이 우려되는 경우 NLS 설정을 선택하여 Oracle이 UTF-8 또는 UTF-16을 사용하도록 하십시오.

처리속도는 어떻습니까?대부분의 새로운 코딩 플랫폼에서는 Unicode가 네이티브로 사용됩니다(Java , ).NET, 심지어 C++ std::wstring from years!) 이므로 데이터베이스 필드가 VARCHAR인 경우 Oracle은 읽기 또는 쓰기 시마다 문자 집합을 변환하도록 강제합니다.NVARCHAR를 사용하면 변환이 회피됩니다.

결론:NVARCHAR 사용!제한과 종속성을 방지하고 스토리지 공간에도 적합하며 일반적으로 성능에도 최적입니다.

nvarchar는 데이터를 Unicode로 저장하므로 다국어 데이터(복수의 언어)를 데이터 열에 저장하려면 N 변종이 필요합니다.

varchar요.non-Unicode charactersnvarchar는, 양쪽 됩니다.unicode ★★★★★★★★★★★★★★★★★」non-unicode some.그들 사이의 다른 차이점이 아래에 제시되어 있다.

VARCHAR와 NVARCHAR

바샤르 키보드
문자 데이터 유형 가변 길이, 유니코드 이외의 문자 Unicode 및 일본어, 한국어, 중국어 등 Unicode 이외의 가변 길이 문자.
최대 길이 8,000 characters 4,000 characters
문자 크기 1 byte 2 bytes Unicode/Non-Unicode 문자 단위
저장소 크기 실제 길이(바이트 단위) 실제 길이의 2배(바이트 단위)
사용. 데이터 길이가 가변 또는 가변 길이 열이고 실제 데이터가 항상 용량보다 훨씬 작은 경우에 사용됩니다. 저장공간으로 인해 일본어 한자 또는 한글과 같은 유니코드 지원이 필요한 경우에만 사용됩니다.

「 」의 주된 Varchar(n) ★★★★★★★★★★★★★★★★★」nvarchar(n) 말합니다

여기에 이미지 설명 입력

Varchar(변수 길이, 유니코드 이외의 문자 데이터)의 사이즈는 최대 8000 입니다.

  1. 가변 길이 데이터 유형입니다.
  2. 유니코드 이외의 문자를 저장하는 데 사용
  3. 각 문자에 대해 1바이트의 공간을 차지합니다.

여기에 이미지 설명 입력

Nvarchar: 데이터 Unicode Unicode 자데 。

  1. 가변 길이 데이터 유형입니다.
  2. 유니코드 문자를 저장하는 데 사용됩니다.
  3. 데이터는 Unicode 인코딩으로 저장됩니다.모든 언어가 지원됩니다.(예를 들어 아랍어, 독일어, 힌디어 등)

내 의견

  1. 올바른 데이터 유형을 사용하지 않으면 인덱스가 실패할 수 있습니다.
    SQL Server:VARCHAR " Unicode " SQL Server " " 。SmallInt는 BigInt를 사용합니다.BigInt' SmallInt'SQL Server'SmallInt'SQL Server입니다.「BigInt」 「NVARCHARCHARCHARCHAR」 「SmallInt」 「ANSI-Code」의 「BigInt」(「NVARCHARCHAR」)입니다.

  2. 데이터 유형은 DBMS(데이터베이스 관리 시스템)마다 다를 수 있습니다.
    데이터베이스마다 데이터 유형이 조금씩 다르며 VARCHAR은 모든 곳에서 동일한 것을 의미하지는 않습니다.SQL Server VARCHAR " NVARCHAR " " Apache / Derby " VARCHAR " Unicode " " 。

주로 nvarchar는 Unicode 문자를 저장하고 varchar는 Unicode 이외의 문자를 저장합니다.

"유니코드"는 아랍어, 히브리어, 중국어, 일본어 등 다른 많은 언어의 문자를 단일 문자 집합으로 인코딩할 수 있는 16비트 문자 인코딩 체계를 의미합니다.

즉, 유니코드는 문자당 2바이트를 사용하여 저장하고 비 유니코드는 문자당 1바이트만 사용하여 저장합니다.즉, 유니코드는 비 유니코드에 비해 저장 용량이 두 배 필요합니다.

SQL Server 2019 varchar 열은 UTF-8 인코딩을 지원하므로

따라서, 지금부터 차이는 크기입니다.

속도의 차이로 해석되는 데이터베이스 시스템입니다.

데이터 감소 = IO 감소 + 메모리 감소 = 일반적으로 속도가 향상됩니다.숫자는 위의 기사를 참조하십시오.

지금부터 UTF8에서 varchar를 즐겨주세요!

2048~16383 및 16384~65535 범위의 문자를 가진 데이터 비율이 큰 경우에만 측정해야 합니다.

★★★★★★★★★★★★★★★★★★.nvarchar는 Unicode 데이터를 하고 Unicode는 Unicode 데이터를 저장합니다.varchar는 싱글바이트 문자 데이터를 저장합니다.스토리지의 차이점 이외(nvarchar이 필요합니다.varchar언급하고 「」를 는, 「」입니다nvarchar에 걸쳐서varchar국제화(즉, 다른 언어로 문자열을 저장)가 될 수 있습니다.

nVarchar는 Unicode 문자를 저장하는 데 도움이 됩니다.현지화된 데이터를 저장하려면 이 방법을 사용합니다.

상황에 따라 다르죠

OS가 Unicode(현재의 모든 Windows 시스템과 마찬가지로)로 동작하고 언어가 Unicode(기본 문자열은 Java 또는 C#와 같이 Unicode)를 기본적으로 지원하는 데스크톱 애플리케이션을 개발하는 경우 nvarchar로 이동합니다.

문자열이 UTF-8로 입력되고 언어가 PHP인 웹 어플리케이션을 개발한다면 (버전 5.x에서는) Unicode를 네이티브로 지원하지 않는 경우 varchar가 더 나은 선택이 될 수 있습니다.

문자를 저장하는 데 1바이트를 사용하는 경우 256개의 조합이 가능하므로 256개의 다른 문자를 저장할 수 있습니다.대조는 문자와 문자의 비교 및 정렬에 사용되는 규칙을 정의하는 패턴입니다.

Latin1(ANSI)인 1252가 가장 일반적입니다.또한 싱글바이트 문자 집합은 여러 언어로 사용되는 모든 문자를 저장하기에 충분하지 않습니다.예를 들어, 일부 아시아 언어에는 수천 개의 문자가 있기 때문에 한 글자당 2바이트를 사용해야 합니다.

유니코드 표준

네트워크에서 여러 코드 페이지를 사용하는 시스템을 사용하면 통신 관리가 어려워집니다.표준화를 위해 ISO와 유니코드 컨소시엄은 유니코드를 도입했다.유니코드는 각 문자를 저장하기 위해 2바이트를 사용합니다.65,536개의 다른 문자를 정의할 수 있으므로 거의 모든 문자를 유니코드로 처리할 수 있습니다.두 대의 컴퓨터가 Unicode를 사용하는 경우 모든 기호는 동일한 방식으로 표시되며 변환이 필요하지 않습니다. 이것이 Unicode의 기본 개념입니다.

SQL Server에는 다음 두 가지 유형의 문자 데이터가 있습니다.

  • 비 유니코드(char, varchar 및 text)
  • Unicode(nchar, nvarchar 및 ntext)

여러 국가의 문자 데이터를 저장해야 할 경우 항상 유니코드를 사용하십시오.

일일 ~일도 although although although although 。NVARCHAR유니코드를 조합에 Unicode를 사용할 .또한 대조 기능을 사용하여 사용할 수도 있습니다.VARCHAR로컬 언어로 데이터를 저장할 수 있습니다.

다음과 같은 시나리오를 상상해 보십시오.

이며, '같은 을 DB에 합니다.VARCHAR(10)"문제가 없으며 DBMS는 3바이트만 사용하여 저장합니다.

그러나 데이터를 다른 데이터베이스로 전송하고 올바른 결과를 보려면 대상 데이터베이스가 이 예제의 페르시아어인 대상 데이터베이스와 동일한 데이터 정렬을 수행해야 합니다.

대상 조합이 다른 경우 대상 데이터베이스에 물음표(?)가 표시됩니다.

마지막으로 로컬 언어용 대용량 데이터베이스를 사용하고 있다면 너무 많은 공간을 사용하지 말고 로케이션을 사용하는 것이 좋습니다.

디자인은 다를 수 있다고 생각합니다.작업 환경에 따라 다릅니다.

, 많은 것 요.nvarchar에 걸쳐서varchar공간이 더 이상 문제가 되지 않으므로 추가 저장 공간을 위해 Unicode를 사용해도 문제가 없습니다.열 위에 색인을 적용하려는 경우 항상 해당되지 않습니다.SQL Server에는 인덱싱할 수 있는 필드 크기가 900바이트로 제한됩니다. 만약에 래서 a a a a so 가 있으면varchar(900)할 수 인덱스는 할 수 없습니다.varchar(901)★★★★★★★★★★★★★★★★nvarchar줄었기 때문에 할 수 nvarchar(450) 자신이 nvarchar사용을 권장하지 않습니다.

일반적으로 데이터베이스에서는 언제든지 확장할 수 있기 때문에 필요한 크기를 유지하는 것이 좋습니다.를 들어,가 '아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아,nvarchar(max)저장에 전혀 문제가 없기 때문에 컬럼에 대해 설명합니다.나중에 이 열에 인덱스를 적용하려고 했을 때 SQL Server가 이를 거부했습니다.만약 라도 가지고 시작했다면varchar(5)이 문제를 해결하기 위해 필드 이행 계획을 실행할 필요가 없는 문제 없이 나중에 필요한 것으로만 확장할 수 있었습니다.

평판 점수가 47000점 이하인 Jeffrey L Whitlege는 nvarchar 사용을 권장합니다.

평판 점수가 33200점 이하인 Solomon Rutzky는 NVARCHAR를 항상 사용하지 말 것을 권장합니다.그것은 매우 위험하고 종종 비용이 많이 드는 태도/접근법입니다.

varchar와 nvarchar SQL Server 데이터 유형의 주요 성능 차이는 무엇입니까?

https://www.sqlservercentral.com/articles/disk-is-cheap-orly-4

둘 다 매우 평판이 좋은 사람인데, 학습용 SQL 서버 데이터베이스 개발자는 무엇을 선택할까요?

선택 내용에 일관성이 없는 경우 성능 문제에 대한 답변 및 설명에 많은 경고가 있습니다.

퍼포먼스에 대한 프로/콘 nvarchar 코멘트가 있습니다.

퍼포먼스에는 프로/콘 varchar라는 코멘트가 있습니다.

저는 수백 개의 컬럼이 있는 테이블에 대한 특별한 요구사항이 있는데, 그 자체는 아마 특이한 것일 것입니다.

SQL*server 2012의 8060바이트 테이블 레코드 크기 제한에 근접하지 않도록 varchar를 선택합니다.

nvarchar를 사용하면 이 8060바이트 제한을 초과합니다.

또, 관련된 코드 테이블의 데이터 타입과 프라이머리 중앙 테이블의 데이터 타입을 일치시키는 것이 좋다고 생각하고 있습니다.

이 작업 장소인 사우스오스트레일리아 정부에서 varchar 열을 사용하는 것을 본 적이 있습니다.이 경우 테이블 행의 수는 수백만 개 이상입니다(이러한 매우 큰 테이블에는 nvarchar 열이 있는 경우 매우 적습니다).따라서 예상되는 데이터 행의 양은 이 결정의 일부가 될 수 있습니다.

나는 여기서 말해야 한다(나는 내가 아마도 슬레이팅에 대해 나를 개방할 것이라는 것을 깨닫는다!) 하지만 확실히 유일한 때.NVARCHAR실제로 더 유용합니다(거기서는 더 유용함).VARCHAR모든 종속 시스템과 데이터베이스 자체의 모든 대조 결과가 동일한 경우...? 않은 경우 되어야 하며, " "는 " "로 변환됩니다.VARCHAR 실행 NVARCHAR.

게다가 SQL Server(2012년 이전) 같은 일부 데이터베이스 시스템의 페이지 크기는 약 8,000입니다.예를 들어, 검색 가능 데이터를 저장해야 하는 경우TEXT ★★★★★★★★★★★★★★★★★」NTEXT[ ] 후 [ ]VARCHAR를 제공하는 반면, 8k는 8k의 합니다.NVARCHAR( 4k ( 2 、 2 ) 。

요약하자면, 어느 한쪽의 사용은 다음 사항에 따라 달라질 수 있습니다.

  • 프로젝트 또는 컨텍스트
  • 사회 기반 시설
  • 데이터베이스 시스템

SQL Server VARCHAR와 NVARCHAR 데이터 유형차이를 따릅니다.여기에서는 매우 알기 쉬운 방법으로 볼 수 있습니다.

일반적으로 데이터는 유니코드로 저장되므로 다국어 데이터(복수의 언어)를 데이터 열에 저장하려면 N 변형이 필요합니다.

nvarcharvarchar 미스매치.nvarchar유니코드★★★★★★를 사용하는 경우where 및 Server를 하고 있는지 =산자,,,가가가가가가다다 다다다다할 수 있는 이 그 column column will will will will, 리리 will will will will will will will will will will will로 바뀌기 때문입니다.varchar 경우nvarchar이 문제는 일어나지 않는다. 우리는 고수하고 있습니다.varchar 이 .LIKE보다 키워드=

varchar는 제한된 문자를 의미하는 비문자 저장에 적합합니다.nvarchar는 varchar의 슈퍼셋이기 때문에 varchar를 사용하여 저장할 수 있는 문자와 함께 기능을 잃지 않고 더 많은 것을 저장할 수 있습니다.

어떤 분이 요즘 스토리지/공간이 문제가 아니라고 하시네요.공간이 문제가 되지 않더라도 최적의 데이터 유형을 식별하는 것이 필수적입니다.

스토리지뿐만이 아닙니다!"데이터 이동" 그러면 내가 어디로 가고 있는지 알 수 있습니다!

언급URL : https://stackoverflow.com/questions/144283/what-is-the-difference-between-varchar-and-nvarchar

반응형