给定一个源表,其中的列包含任意文本,其中包含字母主题标签(#example、#alsoAnExample、#this-is-not-an-example),在 SQL Server 中创建索引 View 需要什么
主题标签正则表达式定义:
/\B#\w*[a-zA-Z]+\w*/
所需的 View 示例输出:
PostId | Tag
1 example
1 alsoAnExample
2 yetanothertag
这将使应用程序层免于在插入时为常规表创建条目的责任,并允许在不了解标记的情况下从其他源输入数据。
如果这是可能的,是否可以以这样的方式完成插入(Posts 表插入繁重)不会造成重大负担,因为 View 索引需要频繁更新。
最佳答案
因为每行可以有多个哈希标签,所以显然不能只使用计算列索引。相反,您在概念上想要拥有的是与计算哈希标签的表值函数交叉应用的基表的索引 View 。我很想在 SQL Server 中实现这一点,但遗憾的是索引 View 所支持的内容极其有限。只需在您的用例中忘记它们即可(并在网上查找书籍中的限制以了解原因)。
相反,我建议您创建一个单独的表来保存哈希标签(格式为 (PostId INT PRIMARY KEY, Tag NVARCHAR(400) PRIMARY KEY, ...
或类似形式)。在应用程序层或使用触发器维护该表。
您还可以以延迟的方式维护表,以便可以进行批量更新并在后台进行。这当然意味着应用程序必须容忍陈旧的数据,并且意味着更多的开发工作。
关于主题标签的 SQL 索引 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19599315/