在我的SQL Server 2008 RC2数据库中,我有一个表T,它在FT列上定义了全文索引。我试图派生一个包含FT列的表,然后使用全文操作从这个派生表中选择如下:
SELECT ft_alias FROM
(SELECT ft AS ft_alias FROM t) t_alias
WHERE CONTAINS(ft_alias, 'abc')
但是这会给出错误消息:
无法使用CONTAINS或FREETEXT 列'ft_alias'的谓词因为 它不是全文索引。
没办法!优化器无法确定此列是否为全文索引?我觉得这很令人惊讶,因为它可以并且在具有标准索引的列上使用索引。
我意识到在这个简单的情况下我可以在没有派生表的情况下重写查询,但是我们的应用程序从用户查询生成任意复杂的SQL,并且使用派生表使我们更容易生成正确的SQL。 / p>
真的没办法解决这个问题吗?