Можно ли создать индекс для столбца с функциями или аналитическими функциями в SQL Server 2016? - PullRequest
0 голосов
/ 23 января 2019

Можно ли создать индекс для столбца с функциями или аналитическими функциями?

У меня есть таблица ABC с колонками XXX updateddatetime, YYY updatedusername. Я пытаюсь создать индексы, как показано ниже

CREATE INDEX idx_Cname1
ON ABC(UPPER(updatedusername));

CREATE INDEX idx_Cdate1
ON ABC(YEAR(updateddatetime));

Я просто получаю сообщение об ошибке

Неверный синтаксис рядом с '('

Можно ли создать индекс, как показано выше. Также можно ли создать индекс для столбцов с аналитическими функциями, такими как LEAD, LAG и т. Д.,

Заранее спасибо!

1 Ответ

0 голосов
/ 23 января 2019

Укажите вычисляемые столбцы в таблице

Создать вычисляемый столбец

ALTER TABLE [t] ADD Cname1 AS ABC(UPPER(updatedusername))
ALTER TABLE [t] ADD Cdate1 AS ABC(YEAR(updateddatetime))

добавить PERSISTED без разницы, индекс все еще материализует поле

после создания индекса

CREATE INDEX idx_Cname1
ON [T] (Cname1);

CREATE INDEX idx_Cdate1
ON [T] (Cdate1);
...