나는 SQL 서버에이 쿼리가 2008는 SQL 서버 행 크기 제한 및 테이블 디자인
CREATE TABLE MediaLibrary
(
MediaId bigint NOT NULL IDENTITY (1, 1),
MediaTypeId smallint NOT NULL,
ImageNameByUser nchar(100) NULL,
GeneratedName uniqueidentifier NOT NULL,
UploadedByUserId uniqueidentifier NOT NULL,
UploadedDate date NOT NULL,
ProfilePhoto bit NOT NULL,
PublicPhoto bit NOT NULL,
AppointmentId bigint NULL,
OriginalImage nchar(1000) NULL,
ThumbImage nchar(1000) NULL,
MediumImage nchar(1000) NULL,
LargeImage nchar(1000) NULL,
UrlThumb nchar(1000) NULL,
UrlMedium nchar(1000) NULL,
UrlLarge nchar(1000) NULL,
InactiveReasonId smallint NULL,
InactiveDate datetime NULL
) ON [PRIMARY]
GO
나는 'MediaLibrary을'테이블을 작성 또는 변질이 오류
을 얻을 테이블을 만들려고하면 9 바이트의 내부 오버 헤드를 포함하여 최소 행 크기가 14273이 G로 실패했습니다. 이것은 8060 바이트의 최대 허용 테이블 행 크기를 초과합니다.
나는 행 크기에 제한을 두게된다. 그러나 이것은 큰 테이블이 아니다. 그래서 나는 이것이 좋은 디자인이 아닌지 궁금해하고있다?
nchar(1000)
을 varChar(1000)
으로 변경하면 테이블이 잘 보존됩니다. 데이터가 실제로 테이블에 저장되면 행 크기 제한에 다시 도달하게됩니다.
'nchar (1000)'은 ** 정말 나쁜 생각입니다 ** ** ** 내부에 "a"만 저장하더라도 ** 항상 ** 2000 바이트의 저장 공간을 사용합니다. 'nchar (n)'은 짧은 (최대 3 자, 아마도 5 자까지) 문자열에 대해 OK입니다. ISO 통화 코드 등. 더 긴 텍스트 스 니펫의 경우에는 ** 항상 ** 실제로 ** 실제로 ** 저장되는'(n) varchar (x)'데이터 유형을 사용해야합니다! –