2

给定一个包含任意文本列的源表,其中包含字母标签(#example、#alsoAnExample、#this-is-not-an-example),在 SQL Server 中创建索引视图需要什么

Hashtag 正则表达式定义:

/\B#\w*[a-zA-Z]+\w*/

所需的视图示例输出:

PostId     |    Tag
   1           example
   1           alsoAnExample
   2           yetanothertag

这将消除应用层在插入时为常规表创建条目的责任,并允许在不知道标记的情况下从其他来源输入数据。

如果这是可能的,是否可以通过插入(Posts 表插入繁重)不会造成重大负担的方式完成,因为视图索引需要经常更新。

4

1 回答 1

3

因为每行可以有多个哈希标签,所以显然不能只使用计算列索引。相反,您在概念上想要的是基表的索引视图,该视图与计算哈希标记的表值函数交叉应用。我很想在 SQL Server 中使用它,但可惜索引视图在它们支持的内容方面极为有限。只需将它们用于您的用例(并在网上查找限制以了解原因)。

相反,我建议您创建一个单独的表来保存哈希标记(形式(PostId INT PRIMARY KEY, Tag NVARCHAR(400) PRIMARY KEY, ...或类似形式)。在应用程序层中维护该表,或使用触发器。

您还可以以延迟的方式维护表,以便您可以批量更新并在后台进行。这当然意味着应用程序必须容忍陈旧的数据,这意味着更多的开发工作。

于 2013-10-25T21:15:49.053 回答