J'utilise SQL Server 2008.SQL Server 2008 - HashBytes colonne calculée
J'ai une colonne appelée Titre NVARCHAR (MAX) et je veux ajouter un index unique pour elle. Étant donné que la colonne est supérieure à 900 octets, j'ai décidé de créer une colonne calculée HashBytes (basée sur la recommandation sur StackOverflow).
Comment créer la colonne HashBytes?
alter table Softs add TitleHash AS (hashbytes('SHA1',[Title])) PERSISTED;
cela a fonctionné et la colonne calculée a été créée.
mais en essayant d'ajouter un index je reçois l'erreur suivante:
Adding the selected columns will result in an index key with a maximum length of 8000 bytes.
The maximum permissible index length is 900 bytes.
INSERT and UPDATE operations fail if the combined value of the key columns exceeds 900 bytes.
Do you want to continue?
Ceci est la requête utilisée pour créer l'index:
CREATE NONCLUSTERED INDEX [UIX_TitleHash] ON [dbo].[Softs]
(
[TitleHash] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
GO
Affichez l'instruction de création d'index. –
@marc_s Il peut effectivement l'inclure dans la liste des colonnes incluses. –
@denis: oui, vrai - ça marchera - mais il ne peut pas en faire une colonne dans la définition d'index en soi (pas les champs inclus) - c'est ce que je voulais dire –