0

索引提高了数据访问性能。我尝试创建索引,但时间消耗没有区别。我在这里错过了什么吗?

我的架构看起来像这样。(49 列)。Id - PrimaryKey(聚集索引)

Id | Name | Age | CountryId | CourseId | ....... | EnrolledOn

表中有大约 425,000 条记录。考虑到 country 和 course 是用于过滤记录的列,我创建了一个包含这两列的复合索引(这两列是外键)。

我尝试了以下查询。

Select * From Students Where CountryId = 1 And CourseId = 1

没有索引和有索引的查询需要 11 秒。

注意:大约 415,000 条记录符合上述条件。这是否会成为消耗时间没有差异的原因。

谁可以帮我这个事。

CREATE NONCLUSTERED INDEX IX_Country_Course ON Students(CountryId,CourseId)
4

2 回答 2

1

而不是*在您的查询中,仅显式指定您要选择的列,并将这些列包含在您的索引中作为included columns..这将缩短选择时间..

希望您知道索引中列的顺序确实很重要..

于 2012-10-11T12:58:11.337 回答
1

如果您从表中请求几乎每一行,则索引将无济于事。在这种情况下,如果您只选择索引中的字段,它只会加速,因此不需要原始表来获取所有请求的数据。

因此,仅选择 countryid,您可能会在上述问题案例中看到一些好处

于 2012-10-11T13:06:23.460 回答