0

得到以下查询

SELECT * FROM myDB.dbo.myTable 
WHERE name = 'Stockholm'

或者

SELECT * FROM myDB.dbo.myTable 
WHERE name LIKE('Stockholm')

我创建了一个全文索引,当我使用它时会使用CONTAINS(name,'Stockholm')它,但在上面的两种情况下,它只执行聚集索引扫描。这是放慢速度的方法,超过 1 秒。我有点困惑,因为我只想搜索应该与 一样快的完美匹配,CONTAINS()不是吗?我读过LIKE至少应该使用索引搜索,如果你不使用通配符,而不是在你正在搜索的单词的开头使用通配符。先感谢您

4

2 回答 2

3

我敢打赌,您在 name 列上没有索引。全文索引不是数据库索引并且不使用,除非您使用全文谓词,如 CONTAINS。

于 2013-11-11T10:42:48.133 回答
0

正如@Panagiotis Kanavos 和@Damien_The_Unbeliever 所述,我的姓名列上没有“非全文”索引。我必须简单地使用以下查询添加索引:

CREATE INDEX my_index_name
ON myDB.dbo.myTable (name)

这将性能从略高于一秒提高到不到半秒。

于 2013-11-11T20:21:39.087 回答