在 SQL Server 中,是否可以在计算上创建索引?
以下并没有为我工作:
CREATE INDEX customermonth ON customers(month(dob));
Run Code Online (Sandbox Code Playgroud)
一些数据库允许我这样做。在 SQL Server 中执行此操作有技巧吗?
men*_*osi 10
是的,可以这样做,但不能使用您使用的语法。关键是你需要在表中创建一个计算列,然后索引:
ALTER TABLE customers ADD MonthOfBirth AS MONTH(dob) PERSISTED;
CREATE INDEX customermonth ON customers (MonthOfBirth);
Run Code Online (Sandbox Code Playgroud)
计算列是SQL Server的名字,在其他产品调用生成列,并在地方STORED
(参见VIRTUAL
),我们使用PERSISTED
。
请参阅Atif Shehzad 撰写的如何在 SQL Server 中的计算列上创建索引。
自然,这要求您有更改表架构的权限,并且您需要确保添加列不会产生任何令人讨厌的副作用(例如破坏使用 的报告SELECT * FROM customers;
)
PERSISTED
在为它们创建索引之前,计算列并不总是必须存在。请参阅有关该主题的文档。
归档时间: |
|
查看次数: |
3973 次 |
最近记录: |