【问题标题】:Function-based indexes in SQL ServerSQL Server 中基于函数的索引
【发布时间】:2014-04-05 18:24:54
【问题描述】:

我试图了解 SQL Server 中是否存在类似于 Oracle 或 PostgreSQL 中的基于函数的索引

在 PostgreSQL 中,我可以使用以下语法创建基于函数的索引:

CREATE INDEX sample ON "TestDB" (("expression1" || ' ' || "expression2"));

我找到了article,我在其中找到了 SQL Server 中称为“计算列上的索引”的东西。这是一个基于函数的索引,就像在 Oracle/PostgreSQL 中一样?谁能提供一个示例查询来创建/查看这样的索引?

【问题讨论】:

  • 它与基于函数的索引相似,不同之处在于您首先命名完整的表达式并将其与表关联(创建计算列),然后作为单独的步骤您在该列上创建索引。您的查询必须使用该列才能从索引中受益。

标签: sql sql-server sql-server-2008 indexing expression


【解决方案1】:

我根据 Damien 的评论进行了进一步研究,发现一个非常接近匹配 Oracle 的/PostgreSQL 的基于函数的索引的答案。

我有一个名为 PARCELS 的表,我使用下面给出的 alter 语句创建了一个新列 COMPUTEDPARCELS

ALTER TABLE [PARCELS] ADD COMPUTEDPARCELS AS CONVERT(CHAR(8), [MAPNO], 112);

然后在计算列上创建索引:

CREATE INDEX function_index ON [PARCELS](COMPUTEDPARCELS);

当然,这个例子很简单,但表现得就像一个基于函数的索引。

【讨论】:

    猜你喜欢
    • 2018-05-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-11
    相关资源
    最近更新 更多