索引可提高数据访问性能。我尝试创建索引,但时间消耗没有区别。我在这里错过了什么吗?
我的架构看起来像这样。 (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)
答案 0 :(得分:1)
而不是查询中的*
,只明确指定要选择的列,并在索引中包含included columns
这些列。这样可以缩短选择时间。
希望您知道索引中列的顺序很重要..
答案 1 :(得分:1)
如果您从表中请求几乎每一行,索引都会做很少的事情。在这种情况下,如果只选择索引中的字段,则只会加速,因此不需要原始表来获取所有请求的数据。
因此,仅选择countryid,您可能会在上述问题案例中看到一些好处