给定一个包含任意文本列的源表,其中包含字母标签(#example,#alsoAnExample,#this-is-not-an-example),在SQL服务器中创建索引视图需要什么? / p>
Hashtag正则表达式定义:
/\B#\w*[a-zA-Z]+\w*/
所需的视图示例输出:
PostId | Tag
1 example
1 alsoAnExample
2 yetanothertag
这将删除应用程序层,使其无需在插入时为常规表创建条目,并允许在不知道标记的情况下从其他来源输入数据。
如果可以,可以这样做,插入(Posts表插入很重)不会造成很大的负担,因为View Index需要经常更新。
答案 0 :(得分:3)
因为每行可以有多个哈希标记,所以显然不能只使用计算列索引。相反,您在概念上想要拥有的是基表的索引视图,该表使用表值函数交叉应用,该函数计算哈希标记。我很乐意在SQL Server中使用它,但是索引视图在它们支持的内容方面非常有限。只是忘记它们的用例(并在网上查阅书籍中的限制以了解原因)。
相反,我建议您创建一个单独的表来保存哈希标记(格式为PostId INT PRIMARY KEY, Tag NVARCHAR(400) PRIMARY KEY, ...
或类似)。在应用程序层维护该表,或使用触发器。
您还可以延迟维护表格,以便您可以进行批量更新并在后台执行。这当然意味着应用程序必须容忍过时的数据,这意味着更多的开发工作。