SQL Server和索引

时间:2009-01-26 10:54:15

标签: sql sql-server

向作为外键关系一部分的列添加索引是否有益?我有两列经常被查询并且已经将它们设置为外键但不确定是否应该将它们编入索引,或者外键是否在幕后创建索引?

3 个答案:

答案 0 :(得分:4)

SQL Server不会创建幕后索引,因此建议在所有外键字段上创建索引以提高查找性能。

详细信息和其他好处:http://technet.microsoft.com/en-us/library/ms175464.aspx

答案 1 :(得分:0)

如果您经常查询索引,建议您在FK列中添加索引。

在您的情况下,如果您创建跨越2列的复合索引可能会更好。 但是,如果您经常执行对这两列进行过滤/排序的查询,则这是唯一可取的(复合索引)。 如果您确定合适的索引是合适的,那么您应该注意在这些列上放置索引的顺序。

答案 2 :(得分:0)

强烈建议为FK字段创建索引 - 这几乎肯定会提高性能。请注意,对于选择,插入可能会更慢,因为索引本身也必须更新。

Sql Server有时会“动态”创建一个FK索引,但只在查询的生命周期内存在 - 您可以查看Sql Execution计划以查看是否发生了这种情况。无论哪种方式,在您控制FK字段的情况下创建自己的索引都是可行的方法。