インデックス付きビューを作成しました:
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)
SQL 2005 Standard SP3 では、フルテキスト インデックスがビューのすべての行に対して次のクエリを実行するため、そのビューにフルテキスト インデックスを作成するのに非常に時間がかかります。
SELECT COLUMN FULLTEXTALL FROM[dbo].[LogValueTexts] WHERE COLUMN FULLTEXTKEY = @p1
COLUMN FULLTEXTALL
とCOLUMN FULLTEXTKEY
は実際にはValue
とであると思いID
ますが、それが SQL Server Profiler の表示です。問題は、クエリ プランがビューのインデックスを使用しないため、約 11M 行/1 GB のデータに対してクラスター化インデックス スキャンを使用することです。そのクエリのプラン ガイドを作成しようとしましたが、標準の T-SQL クエリではないため、許可されません ( Incorrect syntax near the keyword 'FULLTEXTKEY'
)。
このフルテキスト インデックスを次の方法以外で動作させる方法はありますか。
- 正常に動作する SQL 2008 (または SQL 2005 Enterprise) にアップグレードします。
- 基になるテーブルに一意の ID とカバー インデックスを作成します。
アップグレードにはサーバーのダウンタイムが必要であり、一意の ID を作成している間に新しい SQL Server ライセンスが必要になる可能性があり、11M 行のサブセットのみがフルテキスト インデックスを必要とするため (LRVS_VALUE
多くの場合NULL
、または非常に短いテキストを持っているため)、カバーするインデックスは多くのスペースを浪費します。価値)。