得到以下查询
SELECT * FROM myDB.dbo.myTable
WHERE name = 'Stockholm'
或
SELECT * FROM myDB.dbo.myTable
WHERE name LIKE('Stockholm')
我创建了一个全文索引,当我使用CONTAINS(name,'Stockholm')
时会采用该索引,但在上面的两种情况下,它只执行聚簇索引扫描。这是缓慢的,超过1秒。我有点困惑,因为我只想搜索完全匹配,这应该和CONTAINS()
一样快,不是吗?我已经读过LIKE
应该至少使用一个索引,如果你没有分别使用通配符,而不是在你要搜索的单词的开头使用通配符。
提前谢谢
答案 0 :(得分:3)
我敢打赌你的名字栏上没有索引。全文索引不是数据库索引,不使用,除非您使用像CONTAINS这样的全文谓词。
答案 1 :(得分:0)
正如@Panagiotis Kanavos和@Damien_The_Unbeliever所述,我的名字栏上没有“非全文”索引。我只需要使用以下查询添加索引:
CREATE INDEX my_index_name
ON myDB.dbo.myTable (name)
这将性能从略高于一秒提升到不到一秒。