我已创建索引视图:
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
或具有非常短的文本值)。