【问题标题】:Can I create index on a column with functions or analytical functions in SQL Server 2016?我可以在 SQL Server 2016 中使用函数或分析函数的列上创建索引吗?
【发布时间】:2019-01-23 01:56:33
【问题描述】:

我可以在具有函数或分析函数的列上创建索引吗?

我有一个表ABC,其中包含 XXX 更新日期时间、YYY 更新用户名列。我正在尝试创建如下所示的索引

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

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

我只是得到一个错误

'('附近的语法不正确

是否可以创建如上所示的索引。另外,我可以在具有分析功能(如 LEAD、LAG 等)的列上创建索引吗?

提前致谢!

【问题讨论】:

标签: tsql indexing sql-server-2016 analytic-functions


【解决方案1】:

Specify Computed Columns in a Table

创建计算列

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);

【讨论】:

    猜你喜欢
    • 2019-11-26
    • 2015-01-03
    • 2012-05-30
    • 2014-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-11
    • 1970-01-01
    相关资源
    最近更新 更多