복붙노트

[SQL] 문자열을 저장하는 데이터 유형 "텍스트"를 사용하는 모든 단점?

SQL

문자열을 저장하는 데이터 유형 "텍스트"를 사용하는 모든 단점?

Postgres의 문서에 따르면, 그들은 문자 데이터 3 데이터 유형을 지원합니다 :

내 응용 프로그램에서 내가 원하는 텍스트로 실패 삽입 / 업데이트 쿼리는 VARCHAR (N) 또는 문자 (N) 제한을 초과 삽입 할 몇 가지 불쾌한 시나리오를 우연히 만났다.

이러한 경우를 들어, 텍스트와 같은 컬럼의 데이터 유형을 변경하는 것은 충분했다.

내 질문이 있습니다 : 우리가 일반화 및 텍스트에 열을 저장하는 모든 문자의 데이터 유형을 변경하는 경우, 성능 / 메모리의 측면에서 어떤 단점이있다? 데이터 형식의 텍스트 저장과 열이 10 개 이하 캐릭터마다, 내가 텍스트 또는 VARCHAR (10)에 대한 가야하나요? 나는 텍스트를 이동하는 경우 단점은 무엇입니까?

해결법

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

    1.일반적으로, 성능 / 메모리의 측면에서 텍스트를 사용하는 단점은 없습니다. 반대로 : 텍스트는 최적이다. 다른 유형의 더 많거나 관련성이 적은 단점이있다. @Quassnoi 및 @Guffa은 이미이 되거있다.

    일반적으로, 성능 / 메모리의 측면에서 텍스트를 사용하는 단점은 없습니다. 반대로 : 텍스트는 최적이다. 다른 유형의 더 많거나 관련성이 적은 단점이있다. @Quassnoi 및 @Guffa은 이미이 되거있다.

    당신이 알지 못한다면 특히, 문자 또는 문자 (N) (문자 / 문자 (n)의 별칭)를 사용하지 않습니다, 당신은 무엇을하고 있습니다. 이 빈 패딩 유형은 예전의 코드 및 표준과의 호환성을 위해 단지가있다. 그것은 요즘 거의 의미, 폐기물 메모리를 만들고 원인이 문제에 가능성이 높습니다 :

    열에 최대 길이를 적용하려면, 여전히 텍스트 (또는 VARCHAR 기본적으로 동일 길이 지정자없이)하지 VARCHAR (n)을 사용 (문자 가변 별칭 / 문자 다양한 (N)을). 점검 제한 조건은 뷰, 기능 등 FK 제약 열 유형에 따라 달라 때 더욱 그렇고, (테이블 재 작성하지 않고) 나중에 변경하는 것이 훨씬 더 편리합니다.

    ALTER TABLE tbl ADD CONSTRAINT tbl_col_len CHECK (length(col) < 100);
    

    부울 식에 넣을 수 있습니다 아무것도 - 점검 제한 조건도 더 다만 최대 문자 길이를 시행보다 할 수 있습니다. 더 읽기 :

    싼 내부 열거 형으로 사용되는 단일 ASCII 문자에 1 바이트 데이터 형식 : 마지막으로,도 (이중 따옴표) "문자"가있다.

    나는 거의 포스트 그레스에서 문자 데이터에 대한 것도 있지만 텍스트를 사용하지 않습니다.

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

    2.모든 데이터 유형은 동일한 내부 표현 (적당히 유명한 구조체 varlena)를 사용하여 언급

    모든 데이터 유형은 동일한 내부 표현 (적당히 유명한 구조체 varlena)를 사용하여 언급

    CHAR 및 VARCHAR 데이터 유형은이 길이에 검사를 추가하고 (CHAR의 경우), 다른 공간 패딩 의미를 갖는다.

    위의 아무것도 당신의 논리에 중요하지 어디든지 안전하게 텍스트를 사용할 수 있습니다.

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

    3.페이지에서 당신은에 연결되어 있음 :

    페이지에서 당신은에 연결되어 있음 :

    포스트 그레스의 텍스트 데이터 형식을 사용하여 어떤 단점이있을 것 같지 않습니다.

    당신이 정말로 큰 텍스트가 데이터베이스에 저장 될 수 있도록하려는 경우, 당신은 고려해야합니다. 포함 된 VARCHAR로하지만, 실수로 데이터베이스에 방대한 양의 데이터를 저장에서 당신을 보호 할 더 높은 한도를 유지.

  4. from https://stackoverflow.com/questions/20326892/any-downsides-of-using-data-type-text-for-storing-strings by cc-by-sa and MIT license