Obecnie szukamy ustawień naszych kolumn ciągów do nvarchar(max)
zamiast określania określonej długości, aby zapobiec problemom tam, gdzie może być za mało miejsca w bazie danych do przechowywania ciągu znaków. Zastanawiam się tylko, czy to jest dobre, czy może to powodować problemy, ponieważ było to w porządku, to dlaczego określić długość, jak nvarchar(10)
, a nie nvarchar(max)
. Używamy także bardzo dużo, ponieważ nie wiemy, ile danych binarnych będziemy potrzebować, więc nie jestem pewien, jak bardzo jest to efekt, ponieważ nasze wstawki nie są tak szybkie, jak myślę, że powinny być. To jest przykładowa tabela:SqlServer i nvarchar (max)
CREATE TABLE [dbo].[SAMPLETABLE] (
[ID] [uniqueidentifier] NOT NULL,
[FIELD1] [int] NOT NULL,
[FIELD2] [nvarchar] (2000) NULL,
[FIELD3] [nvarchar] (max) NULL,
[FIELD4] [uniqueidentifier] NULL,
[FIELD5] [int] NULL,
[FIELD6] [nvarchar] (2000) NULL,
[FIELD7] [varbinary] (max) NULL,
[FIELD8] [varbinary] (max) NULL,
[FIELD9] [varbinary] (max) NULL,
[FIELD10] [uniqueidentifier] NULL,
[FIELD11] [nvarchar] (2000) NULL,
[FIELD12] [varbinary] (max) NULL,
[FIELD13] [varbinary] (max) NULL,
[FIELD14] [bit] NULL,
[FIELD15] [uniqueidentifier] NULL,
[FIELD16] [varbinary] (max) NULL,
[FIELD17] [bit] NULL,
[FIELD18] [tinyint] NULL,
[FIELD19] [datetime] NULL,
[FIELD20] [nvarchar] (2000) NULL,
PRIMARY KEY CLUSTERED
(
[ID] ASC
)
) ON [PRIMARY]
GO
Biorąc pod uwagę, że projekt stół jak i zmieniając nvarchar(2000)
do nvarchar(max)
by to zrobić rzeczy gorszy (lub lepszy)? Czy sqlserver nie patrzy na takie projekty?
Jakie dane przechowujesz? Jedynym * problemem * będzie indeksowanie, wyszukiwanie i wiązania. To jednak nie sprawia, że zmiana jest dobrym pomysłem. – Matthew
** proszę, nie rób tego! ** Gdybym został wynajęty w miejscu, które ma wszystkie takie stoły, uciekłbym, krzycząc przez drzwi! Następnie dodajesz klaster unikalnego identyfikatora PK na szczycie wszystkich nvarchar (max) kolumn, fuj. Zabijasz zdolność indeksowania danych. Niedługo wrócisz, zadając pytanie, dlaczego twoje zapytanie działa tak wolno, i nie będzie zbyt wiele, abyś mógł to przyspieszyć. W ciągu dnia wszystkie główne/popularne języki były mocno wpisane, ale nie tak bardzo teraz. Wystąpią problemy, jeśli spróbujesz użyć "tego" kuli w bazie danych. –
@KM Przekazałbym twój komentarz milion razy, gdybym mógł, to jest okropny projekt bazy danych. – HLGEM