Я использую SQL Server 2008.SQL Server 2008 - HashBytes вычисляемый столбец
У меня есть столбец NVARCHAR (MAX) под названием Title и я хочу, чтобы добавить уникальный индекс для этого. Поскольку столбец больше 900 байт, я решил создать вычисляемый столбец HashBytes (на основе рекомендации по StackOverflow).
Как создать столбец HashBytes?
alter table Softs add TitleHash AS (hashbytes('SHA1',[Title])) PERSISTED;
это работало и вычисляемый столбец был создан.
НО при попытке добавить индекс я получаю следующую ошибку:
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?
Это запрос, используемый для создания индекса:
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
Опубликовать заявление о создании индекса. –
@marc_s Он действительно может «включить» его в список «включенных столбцов». –
@denis: yes, true - это сработает, но он не может сделать столбец в определении индекса как таковой (не включены поля) - вот что я хотел сказать –