代码之家  ›  专栏  ›  技术社区  ›  Pent Ploompuu

SQL 2005索引视图上的全文索引填充性能

  •  0
  • Pent Ploompuu  · 技术社区  · 16 年前

    我已创建索引视图:

    CREATE VIEW LogValueTexts WITH SCHEMABINDING AS
    SELECT ISNULL(LRVS_SLOG_ID*256+LRVS_IDX,0) AS ID,LRVS_VALUE AS Value
    FROM dbo.LRVS_LogRecordedValues WHERE LEN(LRVS_VALUE)>4
    
    CREATE UNIQUE CLUSTERED INDEX IX_LogValueTexts ON LogValueTexts (ID)
    

    SELECT COLUMN FULLTEXTALL FROM[dbo].[LogValueTexts] WHERE COLUMN FULLTEXTKEY = @p1
    

    我想 COLUMN FULLTEXTALL 和 COLUMN FULLTEXTKEY 实际上是 Value 和 ID ,但这正是SQLServer探查器所显示的。问题是,查询计划使用聚集索引扫描大约1100万行/1GB的数据,因为它不使用视图上的索引。 我曾尝试为该查询创建一个计划指南,但由于它不是标准的T-SQL查询,因此不允许使用它( Incorrect syntax near the keyword 'FULLTEXTKEY'

    除了以下方法外,是否有其他方法可以使此全文索引正常工作:

    • 升级到SQL 2008(或SQL 2005 Enterprise),在那里它可以正常工作。
    • 在基础表上创建唯一ID和覆盖索引。

    升级将需要服务器停机,可能需要新的SQL server许可证,而创建唯一ID和覆盖索引将浪费大量空间,因为只有1100万行中的一个子集需要全文索引( LRVS_VALUE 经常 NULL 或具有非常短的文本值)。

    1 回复  |  直到 16 年前
        1
  •  1
  •   u07ch    16 年前

    如果您不能做到这一点,那么下一个最简单的更改可能是创建一个使用sp或触发器填充的查找表,这样您就可以更改表的索引,使它们对您的查询有意义。