varchar는 필드 크기에 비례하여 디스크 공간을 차지하므로 varchar(8000)
SQL Server에서 varchar를 항상 최대 값으로 정의하지 않아야하는 이유가 있습니까?
테이블 만들기에서 varchar(100)
내가 하는 사람이 있으면 내가 잘못했다고 말해서는 안된다고해야합니까 varchar(8000)
?
varchar는 필드 크기에 비례하여 디스크 공간을 차지하므로 varchar(8000)
SQL Server에서 varchar를 항상 최대 값으로 정의하지 않아야하는 이유가 있습니까?
테이블 만들기에서 varchar(100)
내가 하는 사람이 있으면 내가 잘못했다고 말해서는 안된다고해야합니까 varchar(8000)
?
답변:
요약 :하지 마십시오.
SQL Server를 언급한다고 가정하면 하나를 생각할 수 있습니다.
테이블에 행의 크기 (8K)에 제한이 있으며 SQL을 사용하면 이론적으로 해당 제한을 초과 할 수있는 varchar 필드를 정의 할 수 있습니다. 따라서 관련 필드에 데이터를 너무 많이 넣으면 오류가 발생할 수 있습니다.
SQL 2K8부터는이 한계를 초과 할 수 있지만 성능에 영향을 미칩니다 .
또한 데이터가 예상되는 크기로 크기를 제한하는 전체 합리성 검사가 있습니다. 무한 길이의 필드를 원한다면 text 또는 ntext와 함께 가지 않겠습니까?
필자는 Oracle Database에 대해 데이터베이스 열에 대해 가장 작은 필드 크기를 사용하면 한 가지 함정이 있음을 알게되었습니다.
단일 바이트 데이터 정렬이있는 데이터베이스에서 Oracle XE와 같은 다중 바이트 데이터 정렬이있는 데이터베이스로 가져 오기 내보내기를 통해 데이터를 이동하면 바이트 길이가 증가 할 수 있으며 가져 오기로 작성된 테이블로 데이터를 가져 오는 데 실패합니다. 물론 오라클은 varchar2 길이를 char 또는 byte로 정의 할 수 있습니다.
필자의 요점은 항상 가능한 한 작은 필드를 정의하는 것이 항상 현명한 것은 아니라는 것입니다. 나중에 필드 변경을 증가시키기 위해 많은 변경 테이블을 보았습니다 (변경된 요구 사항으로 인해).
사용하지 않는 필드가 20 %-100 % 인 것이 여기에서 논의 가능한 옵션입니다.