【发布时间】:2017-09-27 16:10:16
【问题描述】:
假设我们有一个Employees 表,在Note 字段上有一个全文索引。
我们可以使用这样的查询来搜索该表:SELECT ID FROM Employees WHERE CONTAINS(Note, 'scout')
但是,如果我们使用像 SELECT ID, Note FROM Employees 这样简单的东西创建一个 EmployeesView,我们将无法使用 SELECT ID FROM EmployeesView WHERE CONTAINS(Note, 'scout') 查询该视图
该查询会引发以下错误:
不能对表或索引视图“EmployeesView”使用 CONTAINS 或 FREETEXT 谓词,因为它不是全文索引。
我想了解为什么视图不能像对其他常规索引那样针对其基础表运行 FTS?
注意 #1 这个问题不是关于如何在视图上创建全文索引,因为这已经是 answered。这个问题是为了理解为什么我们必须这样做。
注意 #2 我们的数据库比提供的示例更复杂。我们有许多使用同一个全文索引表的视图,有些可以被索引,而有些则不能,因为模式绑定限制。我还认为,如果每个视图都相同,则向每个视图添加 FTI 有点奇怪(并且会浪费大量磁盘空间)。
【问题讨论】:
标签: sql-server full-text-search sql-server-2016