10

我有一个这样创建的视图:

CREATE VIEW [dbo].[vwData] WITH SCHEMABINDING
AS
    SELECT  [DataField1] ,
            [DataField2] ,
            [DataField3]
    FROM    dbo.tblData

当我尝试在其上创建全文索引时,如下所示:

CREATE FULLTEXT INDEX ON [dbo].[vwData](
[DataField] LANGUAGE [English])
KEY INDEX [idx_DataField]ON ([ft_cat_Server], FILEGROUP [PRIMARY])
WITH (CHANGE_TRACKING = AUTO, STOPLIST = SYSTEM)

我收到此错误:

View 'dbo.vwData' is not an indexed view. 
Full-text index is not allowed to be created on it.

知道为什么吗?

4

2 回答 2

19

首先,您需要在视图上创建唯一聚集索引,然后再创建全文索引。

假设你有一张桌子:

CREATE TABLE [dbo].[tblData](
    [DataField1] [Varchar] NOT NULL,
    [DataField2] [varchar](10) NULL,
    [DataField3] [varchar](10) NULL
    )

正如你已经做过的那样,你有一个观点:

CREATE VIEW [dbo].[vwData] 
WITH SCHEMABINDING
AS
    SELECT  [DataField1] ,
            [DataField2] ,
            [DataField3]
    FROM    dbo.tblData
GO

现在您需要在视图上创建唯一的聚集索引:

CREATE UNIQUE CLUSTERED INDEX idx_DataField
    ON [dbo].[vwData] (DataField1);
GO

由于您已经拥有全文目录ft_cat_Server ,因此在创建唯一键后,您可以创建全文索引:

CREATE FULLTEXT INDEX ON [dbo].[vwData](
[DataField1] LANGUAGE [English])
KEY INDEX [idx_DataField]ON ([ft_cat_Server], FILEGROUP [PRIMARY])
WITH (CHANGE_TRACKING = AUTO, STOPLIST = SYSTEM)

希望这可以帮助 :)

于 2013-09-30T02:06:56.430 回答
12

您必须通过创建唯一聚集索引来索引视图:

create unique clustered index ix_vwData on vwData(<unique columns>)

之后,索引idx_DataField必须是唯一的、不可为空的、单列索引。

于 2013-09-22T15:49:38.493 回答