저는 항상 SQL 문자열 열의 최대 길이에 대한 필요성에 시달렸습니다. 실제 최대 길이가없는 데이터가 있습니다. 예를 들어 누군가의 이름을 저장하는 입력란이 있고이를 NVARCHAR(50)
으로 설정했다고 가정 해 보겠습니다. 누군가가 50 자보다 긴 이름을 가질 수는 있지만 (가능성은 낮지 만) 항상 가능합니다.nvarchar는 최대 크기로 즉시 변경합니다.
비행 중에 필드의 최대 길이를 변경하는 것이 가능합니까? 내가 의미하는 바는 INSERT/UPDATE
을 할 때 그 사람의 이름이 50 자보다 긴지 확인하고 ALTER
테이블을 확인한 후에 INSERT/UPDATE
을 수행해야합니다. (또는 예외를 catch하고 필요하면 ALTER
을 수행하십시오.)
테이블에 많은 양의 데이터가있는 경우 ALTER
이 느린 작업을 수행합니까?
열을 NVARCHAR(100)
으로 변경한다고 가정 해 보겠습니다. 이 테이블의 SELECT
은 처음부터 NVARCHAR(100)
으로 만들었을 때보 다 느려 집니까?
데이터베이스 스키마를 즉시 변경하는 것은 끔찍한 생각입니다. 합리적으로 필드를 크게 만들고 입력의 유효성을 검사하는 코드를 가져야합니다. –
좋은 기본값을 선택하십시오. 이 스레드 질문에는 몇 가지 사려 깊은 답변이 있습니다. http://stackoverflow.com/questions/919871/how-big-do-you-make-your-nvarchar – dcaswell
어떤 DBMS를 사용하고 있습니까? 신탁? 포스트그레스? 또 다른 옵션은 열을 가능한 한 길게 정의한 다음 점검 규칙을 사용하여 비즈니스 규칙이 유지되도록하는 것입니다. 검사 제약 조건을 변경해도 데이터에 물리적 인 변경은 적용되지 않습니다. –