таблицы У меня есть этот запрос на SQL Server 2008Sql Server предельный размер строки и дизайн
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» потому что минимальный размер строки будет 14273, включая 9 байтов внутренних накладных расходов. Это превышает максимально допустимый размер строки таблицы 8060 байт.
Получаю, что я нажимаю лимит на размер строки, но это не большой стол, поэтому мне интересно, если это не хороший дизайн?
Когда я изменил nchar(1000)
на varChar(1000)
, таблица сохранила штраф. Я обеспокоен тем, что, как только данные фактически будут сохранены в таблице, я снова удалю ограничение размера строки.
'nchar (1000)' это ** действительно плохая идея ** - он всегда ** использует 2000 байт памяти, даже если вы храните только «а» внутри него. 'nchar (n)' ОК для короткой (до 3, может быть, 5 символов) строки, например. Коды валюты ISO и т. Д .; но для более длинных фрагментов текста вы всегда должны ** использовать тип данных '(n) varchar (x)', который хранит только то, что на самом деле существует! –