我在SQL Server中有一个表,其中包含以下列:
id int (primary key)
text nvarchar(max) (full text indexed)
type int
我有这样的疑问:
where Contains([text], @text)
或
where Contains([text], @text) AND [type] = 3
但是第二个查询很慢。我想我应该将全文索引与[type]字段集成。
还有其他解决方案吗?
由于
答案 0 :(得分:2)
我假设您没有运行SQL 2008,因为该版本中的集成全文引擎应该为您的查询做出更好的决策。对于早期版本,我通过在文本中使用某种形式的自定义标记嵌入其他键来获得成功。你需要一些触发器来保持文本的最新状态。
例如,“这是我的示例文本。 TypeKey_3"
然后你的where子句变成了:
where Contains([text], @text AND "TypeKey_" + @type)
答案 1 :(得分:1)
鉴于您无法在全文索引中添加整数字段,最好的办法是为[type]添加常规索引。