在具有函数的视图上放置全文搜索索引

时间:2009-04-21 03:39:59

标签: sql-server full-text-search

我正在使用SQL Server 2008,我有一个如下所示的视图:

select ID, dbo.functionname(ID) from tablename

我正在尝试对此进行全文索引,但它似乎没有一个我可以解决的唯一索引。 tablename.ID是唯一标识符。

我尝试在其上创建索引,但它说它无法构建绑定视图,因为该函数不是模式绑定。

创建全文索引需要做什么?

2 个答案:

答案 0 :(得分:2)

为了能够创建索引视图,视图必须是确定性的,即必须保证它在每个查询中都是相同的。

您的用户功能是deterministic吗?

  

用户定义的函数确定性

     

是否是用户定义的函数   确定性或非确定性   取决于函数的编码方式。   用户定义的函数是   确定性如果:

* The function is schema-bound.

* All built-in or user-defined functions called by the user-defined
     

功能是确定性的。

* The body of the function references no database objects outside
     

功能范围。对于   例如,确定性函数   不能引用其他表格   表变量是本地的   功能

* The function does not call any extended stored procedures.
     

没有的用户定义函数   符合这些标准的标记为   不确定的。内建的   非确定性函数不是   允许在用户定义的主体中   功能

你的函数是SchemaBound吗?

alter function [dbo].[UserFunction] 
(@example int = 1 ) 
returns int
with schemabinding
as
begin
  return 1
end

您的视图是SchemaBound吗?

ALTER VIEW dbo.UserView
WITH SCHEMABINDING
AS
SELECT ID, [dbo].userFunction

要创建索引视图,您必须先创建unique clustered index(See FAQ a bottom)

答案 1 :(得分:0)

我认为你在上面的评论中并不是“不”模式 重新创建视图“WITH SCHEMABINDING” 然后创建一个唯一的聚集索引 正如此处所解释的那样http://www.mssqltips.com/tip.asp?tip=1610 然后尝试添加全文索引