我有一个SQL Server 2008 db的以下sql查询。
SELECT TOP(@NumberOfStreetResults) LocationType, LocationId, Name
FROM [dbo].[LocationNames]
WHERE CONTAINS(Name, @SearchQuery)
AND LocationType = 7
注意我是如何使用CONTAINS
关键字的?我在Name
字段上有 FTS 。
我不确定手动添加到表中需要哪些索引,因为此查询在我们的系统中非常常见。
我是否只需要针对LocationType
添加索引?
这是查询图表......
答案 0 :(得分:0)
只是索引是SQL中的临时表,它保留索引列的副本的排序。插入新行时,SQL会将临时表中的新记录放在正确的位置,以便索引具有以下结果:
A)优点:
1)提高搜索速度,因为该表是基于索引字段在临时表中排序的
B)缺点:
1)减慢CRUD(创建,读取,更新,删除),因为如果需要,应该对临时表执行相同的操作。
2)由于使用临时表,数据库大小增加。
<强>结论:强>
对您经常将其作为搜索条件(WHERE)
引用的字段使用索引答案 1 :(得分:0)
如果您的LocationType具有高度选择性,那么我的建议是在该表上创建一个覆盖索引,其中键为LocationType,并在您的包含列列表中添加LocationId