私の SQL Server 2008 RC2 データベースには、列 FT で定義されたフルテキスト インデックスを持つテーブル T があります。列 FT を含むテーブルを派生させようとしています。次に、次のように全文操作を使用して、この派生テーブルから選択します。
SELECT ft_alias FROM
(SELECT ft AS ft_alias FROM t) t_alias
WHERE CONTAINS(ft_alias, 'abc')
しかし、これによりエラーメッセージが表示されます:
列 'ft_alias' で CONTAINS または FREETEXT 述語を使用することはできません。この列は全文索引付けされていないためです。
とんでもない!オプティマイザーは、この列が全文索引付けされていることを認識できませんか? 標準インデックスを持つ列のインデックスを使用でき、使用するため、これは驚くべきことです。
この単純なケースでは、派生テーブルを使用せずにクエリを書き直すことができますが、アプリケーションはユーザー クエリから任意に複雑な SQL を生成しており、派生テーブルを使用すると、正しい SQL を生成するのがはるかに簡単になります。
これを回避する方法は本当にありませんか?