복붙노트

[SQL] 왜 VARCHAR (최대)를 사용하지?

SQL

왜 VARCHAR (최대)를 사용하지?

내가 열에서 올바른 데이터 크기를 사용하는 완전히 해요 그래서, 데이터베이스 설계에 올 때 나는 조금 오래된 학교입니다. 친구에 대한 데이터베이스를 검토 할 때 그러나, 나는 그가 사용 VARCHAR (최대)을 많이 나타났습니다. 자, 내 즉각적인 생각은 다시 그에게 던져 및 변경하라고했다. 그러나 나는 그것에 대해 생각하고 그를 그것을 사용하지에 대한 (그는 당신이 궁금해하는 경우 DB를 생성하는 경우 유형 도구를 사용했던) 좋은 이유와 함께 올 수 없었다.

나는 VARCHAR (최대) 사용의 주제를 연구 봤는데 그 그것을 사용하지 않는 정말 좋은 이유 가지고 올 수 없습니다.

그는 인덱스에 대해이 분야에서 대규모 항목을 허용하지 않도록, 입력에 제한이있는 DB에 앉아 응용 프로그램을 열을 사용하지 않습니다.

어떤 도움은 나에게 그 빛 :)을 볼 수 있도록 도움을 주시면 감사하겠습니다.

해결법

  1. ==============================

    1.이에 대한 나의 대답은, 그것은 TEXT 대 VARCHAR (최대)의 이유에 관한 것입니다만큼, 최대의 사용에 대한 아닙니다.

    이에 대한 나의 대답은, 그것은 TEXT 대 VARCHAR (최대)의 이유에 관한 것입니다만큼, 최대의 사용에 대한 아닙니다.

    내 책에서; 우선,하지 않는 한 당신은 당신이 NVARCHAR 또는 NTEXT를 사용해야합니다, 당신은 인코딩 아무것도하지만, 영어 텍스트와 사람들이 외국 위치의 이름을 참조하지 않습니다거야 것을 절대적으로 확신 할 수 있습니다.

    둘째,이 필드는 당신이 할 수있는 것입니다.

    TEXT는 VARCHAR 비교 갱신 하드,하지만 당신은 전체 텍스트 인덱싱 및 영리 것들의 많은 장점을 얻을.

    한편, VARCHAR (MAX)는 셀의 크기가이 <8000 개 문자, 그것은 행 데이터로 취급되고, 일부 모호성을 가진다. 그것은 더의 경우, 저장 목적으로 LOB로 처리됩니다. 당신이 RBAR을 쿼리하지 않고이 알 수 없기 때문에, 이것은 당신이 당신의 데이터에 대해 확인해야 얼마나 많은 것은 IT 비용을 읽는 장소에 대한 최적화 전략을 가질 수있다.

    사용량이 상대적으로 평범한이고 그렇지 않으면, 당신은 데이터의 크기에 문제가 (IE는 닷넷을 사용하고, 따라서 귀하의 문자열 / 문자 * 객체의 크기에 대해 우려 할 필요가 없습니다)이 기대하지 않는다 다음 VARCHAR (max)를 이용하여 미세하다.

  2. ==============================

    2.여기 VARCHAR의 최대 사용하지 않는 이유에 대해 블로그 게시물이 있습니다

    여기 VARCHAR의 최대 사용하지 않는 이유에 대해 블로그 게시물이 있습니다

    편집하다

    데이터가 저장되는 기본적인 차이이다. 는 SQL 데이터 행이 8000 바이트의 최대 크기가 (또는는 8K했다). 이어서 2GB의 VARCHAR (최대)은 데이터 행에 저장 될 수 없다. SQL 서버 "행의 부족"을 저장합니다.

    데이터가 디스크에 같은 장소에 있지 않으므로 따라서 사용자가 성능 저하를 얻을 수, 참조 : http://msdn.microsoft.com/en-us/library/ms189087.aspx

  3. ==============================

    3.당신이 OLTP 환경에서 작업하는 경우에는 성능에 대한 모든입니다. 인덱싱 제한 및 쿼리 병목 현상을 오버 헤드 및 조정 문제에서. 다른 입력 메커니즘의 사용을 통해 처리되고 만 VARCHAR (최대) 할 수없는 특정 사업의 필요가없는 한 varcahr (최대) 또는 기타 LOB 유형을 사용하면 대부분 위반 대부분의 디자인 모범 사례, 그래서를 맞는 것입니다 법안 다음 왜 LOB 데이터 유형 중 하나에 내재 된 오버 헤드 및 성능 문제의 종류에 따라 시스템 및 응용 프로그램?

    당신이 OLTP 환경에서 작업하는 경우에는 성능에 대한 모든입니다. 인덱싱 제한 및 쿼리 병목 현상을 오버 헤드 및 조정 문제에서. 다른 입력 메커니즘의 사용을 통해 처리되고 만 VARCHAR (최대) 할 수없는 특정 사업의 필요가없는 한 varcahr (최대) 또는 기타 LOB 유형을 사용하면 대부분 위반 대부분의 디자인 모범 사례, 그래서를 맞는 것입니다 법안 다음 왜 LOB 데이터 유형 중 하나에 내재 된 오버 헤드 및 성능 문제의 종류에 따라 시스템 및 응용 프로그램?

    반면에 경우는 OLAP 환경에서 또는 자연적으로 상세 할 필요가 설명 필드와 차원 테이블이있는 스타 스키마 DW 환경에서 작업 후 VARCHAR (최대), 같은 당신이 인덱스에 있음을 추가하지 않는 한, 유용 할 수 있습니다. 아직 내가 문자를 사용하는 경우에도 다음 추천 할 것입니다 (x)를 VARCHAR (x)는 단지 당신이 절대적으로 작업을 완수하는 데 필요한 그 자원을 사용하는 가장 좋은 방법은 항상있다.

  4. ==============================

    4.당신은 많은 양의 데이터를 예상하고 여기에 이유 (직접 온라인에서이)하지 않는 한 그들은 사용하지 않아야합니다 :

    당신은 많은 양의 데이터를 예상하고 여기에 이유 (직접 온라인에서이)하지 않는 한 그들은 사용하지 않아야합니다 :

    당신은 성능, 모두를위한 사용 NVARCHAR을 무력화하려는 경우.

  5. ==============================

    5.레드 게이트는 이것에 대해 좋은 기사를 썼다. https://www.red-gate.com/simple-talk/sql/database-administration/whats-the-point-of-using-varcharn-anymore/

    레드 게이트는 이것에 대해 좋은 기사를 썼다. https://www.red-gate.com/simple-talk/sql/database-administration/whats-the-point-of-using-varcharn-anymore/

    결론

  6. ==============================

    6.나는 작은 선언 VARCHAR 필드로, 무결성 제약의 이익이 여전히 얼마나 SQL 서버 핸들 성능, 메모리 및 스토리지 관점에서 큰 (선언) VARCHAR 필드를 ..하지만하지 않도록 효율적으로 가정 모른다.

    나는 작은 선언 VARCHAR 필드로, 무결성 제약의 이익이 여전히 얼마나 SQL 서버 핸들 성능, 메모리 및 스토리지 관점에서 큰 (선언) VARCHAR 필드를 ..하지만하지 않도록 효율적으로 가정 모른다.

    DB를에 앉아 응용 프로그램이 입력에 대한 제한을하도록되어 있지만, 응용 프로그램이이 점에 버그가있는 경우 데이터베이스가 제대로 오류를보고 할 수 있습니다.

  7. ==============================

    7.은 diff는 다음에있다 : VARCHAR (X)를 인덱싱하고 MDF / NDF 데이터 파일에 저장 될 수있다. VARCHAR (MAX)는 높은 볼륨에 도달 할 수 있기 때문에 인덱싱 될 수 없습니다 다음 구분 파일로 아닌 MDF / NDF 데이터 파일에 저장됩니다.

    은 diff는 다음에있다 : VARCHAR (X)를 인덱싱하고 MDF / NDF 데이터 파일에 저장 될 수있다. VARCHAR (MAX)는 높은 볼륨에 도달 할 수 있기 때문에 인덱싱 될 수 없습니다 다음 구분 파일로 아닌 MDF / NDF 데이터 파일에 저장됩니다.

  8. ==============================

    8.다소 구식 응용 프로그램은 데이터베이스에 짧은 문자열을 합격을 믿고 있으며, 괜찮아요을 만들 것입니다.

    다소 구식 응용 프로그램은 데이터베이스에 짧은 문자열을 합격을 믿고 있으며, 괜찮아요을 만들 것입니다.

    현대에서는 데이터베이스가 현재 응용 프로그램에 의해 주로 액세스 할 것이지만, 응용 프로그램의 향후 버전이있을 수 있음을 예상해야합니다 (해당 버전의 노하우 개발자가 특정 길이 이하로 문자열을 유지하는 것인가?)

    당신은 웹 서비스, ETL 프로세스, SQL에 LYNC하고 데이터베이스에 액세스하는 데 사용됩니다 기존 및 / 또는하지 아직 기존 기술의 다른 번호를 예상해야합니다.

    일반적으로는 모든 후, 네 천 문자이기 때문에이 VARCHAR (4000)를 통해 이동하지 않으려 고 말하기. 나는 그것을 초과하는 경우에, 나는 내가 가게에 노력하고 무엇이든 저장소에 다른 데이터 유형으로 본다. 브렌트 Ozar이에 꽤 큰 물건을 작성했습니다.

    말했다 모든 것은, 당신이 프로젝트에서 작업 할 때 현재의 요구 사항에 현재 디자인의 접근 방식을 평가하는 것이 중요하다. , 여러 부분이 작동하는 방법에 대한 아이디어를 가지고 다양한 접근 방법의 장단점을 이해하고 손에 문제를 해결. 멋진 공리를 운동하는 것은 나그네 쥐로 변신 수도 준수를 장님으로 이어질 수 있습니다.

  9. from https://stackoverflow.com/questions/7141402/why-not-use-varcharmax by cc-by-sa and MIT license