programing

MySQL: VARCHAR(255) 대신 VARCHAR(20)를 사용하는 이유는 무엇입니까?

oldcodes 2023. 10. 1. 21:56
반응형

MySQL: VARCHAR(255) 대신 VARCHAR(20)를 사용하는 이유는 무엇입니까?

중복 가능:
모든 텍스트 기반 필드에 일반 varchar(255)를 사용하는 것에 단점이 있습니까?

MYSQL에서는 VARCHAR 필드 유형의 길이를 선택할 수 있습니다.가능한 값은 1 ~ 255입니다.

하지만 VARCHAR(20) 대신 최대치인 VARCHAR(255)을 사용한다면 어떤 장점이 있습니까?항목의 크기는 삽입된 문자열의 실제 길이에만 의존하는 것으로 알고 있습니다.

사이즈(bytes) = 길이+1

따라서 VARCHAR(255) 필드에 "Example"이라는 단어가 있으면 8바이트가 됩니다.VARCHAR(20) 필드에 있으면 8바이트도 포함됩니다.뭐가 다른 거지?

도와주셨으면 좋겠습니다.미리 감사드립니다!

체크아웃: Varchar 참조

간단히 말해, VARCHAR에서 255의 크기를 넘기지 않는 한, 길이 접두사에 다른 바이트가 필요할 것입니다.

길이는 다른 무엇보다도 열에 저장된 데이터에 더 많은 제약이 있음을 나타냅니다.이로 인해 열에 대한 최대 저장 크기도 제한됩니다.IMHO, 길이는 데이터와 관련하여 의미가 있어야 합니다.사회 보장 #를 저장하는 경우 실제로 저장하는 것이 SSN뿐이라면 스토리지 비용이 전혀 들지 않지만 길이를 128로 설정하는 것은 의미가 없습니다.

최대 값보다 작은 값을 선택하는 데는 성능과 관련이 없는 여러 가지 타당한 이유가 있습니다.크기를 설정하면 저장 중인 데이터 유형을 표시하는 데 도움이 될 뿐만 아니라 검증의 마지막 단계로 작용할 수도 있습니다.

예를 들어 영국 우편번호를 저장하는 경우 8자만 필요합니다.이 제한을 설정하면 저장 중인 데이터 유형을 명확하게 하는 데 도움이 됩니다.만약 당신이 255자를 선택한다면 그것은 단지 문제를 혼동할 것입니다.

mySQL에 대해서는 모르지만 SQL Server에서는 사용된 총 바이트 수가 레코드에 실제로 저장할 수 있는 총 바이트 수보다 더 크도록 필드를 정의할 수 있습니다.이것은 나쁜 것입니다.조만간 한계에 도달하여 데이터를 삽입할 수 없는 행이 나올 것입니다.

행 크기 제한을 고려하도록 데이터베이스 구조를 설계하는 것이 훨씬 좋습니다.

또한 최대 값이 10이어야 하는 필드에 200자를 넣지 않도록 합니다.만약 그렇다면, 이는 거의 항상 나쁜 데이터입니다.

애플리케이션 수준에서 제한할 수 있습니다.그러나 데이터는 한 애플리케이션에서만 데이터베이스에 들어오는 것이 아닙니다.여러 애플리케이션에서 사용하는 경우도 있고, 데이터를 가져오는 경우도 있고, 쿼리 창에서 수동으로 수정하는 경우도 있습니다(예를 들어 가격에 10%를 추가하도록 모든 레코드를 업데이트).이러한 다른 데이터 소스 중 하나라도 응용프로그램에 입력한 규칙에 대해 모르는 경우 데이터베이스에 잘못된 쓸모없는 데이터가 있게 됩니다.데이터 무결성은 데이터베이스 수준에서 실행되어야 합니다(데이터를 입력하기 전에 확인할 수 없게 함). 그렇지 않으면 무결성이 없습니다.또한 데이터베이스를 설계하는 데 너무 귀찮은 사람들도 애플리케이션에 실제로 한계를 두기에는 너무 귀찮고 데이터 무결성 검사도 전혀 없다는 것이 제 경험이었습니다.

이들은 데이터 무결성이 없는 데이터베이스라는 단어를 가지고 있습니다. 쓸모가 없습니다.

의미론적 차이가 하나 있는데, 그것이 유일한 차이라고 생각합니다. 만약 공간이 아닌 30개의 문자를 varchar(20)에 채우려고 하면 오류가 발생하는 반면 varchar(255)에는 오류가 발생합니다.그래서 그것은 주로 추가적인 제약조건입니다.

음, 더 큰 엔트리를 허용하거나 엔트리 크기를 제한하고 싶다면요.

예를 들어 first_name을 VARCHAR 20으로 지정할 수 있지만 street_address를 VARCHAR 50으로 지정하면 공간이 부족할 수 있습니다.동시에 값의 크기를 조절할 수도 있습니다.

즉, 이론적으로 테이블(및 잠재적으로 인덱스/인덱스 항목)이 너무 커지는 것을 방지하기 위해 특정 값의 크기 상한을 설정한 것입니다.

고정 너비인 CHAR를 사용할 수도 있지만, 이보다 작을 수 있는 VARCHAR와 달리 CHAR는 값을 패드합니다(SQL 액세스 속도가 빨라집니다).

데이터베이스 성능 측면에서는 차이가 있을 것이라고 생각하지 않습니다.

하지만 사용 기간에 대한 결정의 대부분은 시스템이 필요한 데이터만 수용할 수 있도록 시스템을 구현하고 문서화하려는 것으로 귀결된다고 생각합니다.

언급URL : https://stackoverflow.com/questions/1262174/mysql-why-use-varchar20-instead-of-varchar255

반응형