al momento stiamo impostando le nostre colonne di stringhe su nvarchar(max)
anziché specificare una lunghezza specifica per evitare problemi in cui non ci potrebbe essere spazio sufficiente nel database per memorizzare la stringa. Mi sto solo chiedendo se questa è una buona cosa o potrebbe causare problemi dal momento che era ok per fare quindi perché specificare una lunghezza come nvarchar(10)
anziché nvarchar(max)
. Usiamo anche varbinary(max)
molto perché non sappiamo quanti dati binari avremo bisogno quindi non sono sicuro di quanto questo sia un effetto o diamo che i nostri inserti non sono veloci come penso che dovrebbero essere. Questo è un esempio di tabella:SqlServer e 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
Dato un design del tavolo del genere e cambiare il nvarchar(2000)
a nvarchar(max)
vorrei che le cose peggio (o meglio)? Sqlserver disapprova disegni come questo?
Che tipo di dati stai memorizzando? L'unico * problema * sarà indicizzazione, ricerca e vincoli. Ciò non rende comunque il cambiamento una buona idea. – Matthew
** per favore non farlo! ** Se fossi stato assunto in un posto che ha tutti i loro tavoli come questo, correrei urlando fuori dalla porta! Quindi aggiungi il PK uniqueidentifier cluster sopra a tutte le colonne nvarchar (max), yuck. Stai uccidendo la tua capacità di indicizzare i tuoi dati. Un giorno presto, tornerai a fare una domanda sul perché la tua query è così lenta e non ci sarà molto da fare per velocizzarla. Nel corso della giornata, tutte le lingue principali/popolari sono state digitate fortemente, ma non così tanto ora. Vi imbatterete in problemi se provate ad usare "quella" stampella in un database. –
@ KM Se avessi potuto, avrei alterato il tuo commento un milione di volte, si tratta di un orribile design di database. – HLGEM