在 SQL Server 中,索引视图是一个充满限制的地狱景观。但我需要一个。我有一个格式化程序 SQLCLR 函数,它创建一个域键的美化版本 - 用户希望能够搜索该美化版本的子字符串。所以我需要一个持久计算列或物化视图的全文索引。
但是,格式化程序依赖于存储在多个表中的数据。
所以这适用于视图,但不适用于持久计算列,因为它们无法从多个表中查询。
我的 SQLCLR 方法是精确且确定性的,因此它应该可以在索引视图中使用,但索引视图的索引键中不能有 SQLCLR。
我可以使用 T-SQL 函数重新实现我的格式化程序FORMAT
......但FORMAT
也与索引视图不兼容。
索引视图可以做任何事情吗? 曾经?
如果有人可以向我推荐一个关于最佳实践的好文档,我对“使用触发器滚动你自己的物化视图”方法持开放态度。上次我尝试时,它失控了,插入和更新的代码与初始化之间存在大量重复。
是否有某种方法可以在不使用物化/索引视图或持久计算列的情况下对几百万行的计算数据进行高性能文本搜索?
格式化程序不执行数据访问。但是,我需要输入格式化程序以使其有用的数据将来自多个表(具有良好的常规连接),因此我无法使用持久计算列解决此问题。我无法键入 SQLCLR 列,因此无法在全文索引中使用它。
我以为这很简单。持久列和索引视图旨在执行写入计算,并正确实现观察者模式,以便对其依赖关系的更改反映在计算值上。