我正试图掌握索引。鉴于表格:
Books
------
ID (PK)
Title
CategoryID (FK)
AuthorID (FK)
在我的ASP.net页面中,如果我想提高检索时间,我会按作者或类别提取图书,我会在CategoryID Asc, AuthorID asc
上创建索引吗?
我是否正确理解了它?如果我使用上面的多个列,那是一个叫clustered index
还是其他的?
答案 0 :(得分:4)
您应该创建两个索引,一个用于CategoryID
,另一个用于AuthorID
。如果你在另一个中寻找一个或,那么两者都不在同一个索引中;如果你一直在同时查询两者(例如类别和作者),你需要这样做。
聚簇索引控制数据的物理顺序。通常,如果您有一个标识列,将其用作聚簇索引(默认情况下是主键)就可以了。
答案 1 :(得分:3)
clustered 索引表示数据按索引指定的顺序存储在表和磁盘(等)中。这样做的结果是,只能存在一个聚簇索引。
索引CategoryID Asc, AuthorID asc
将更快地查找特定类别,并且对特定作者的特定类别进行查找将是理想的。但它不仅仅是作者查找的理想选择,因为您必须为每个类别找到作者。在这种情况下,两个单独的索引会更好。
答案 2 :(得分:2)
适当的索引取决于查询的作用。如果您有针对类别和作者加入的查询,那么您可能会使用包含这两个字段的索引,否则您可能会更多地使用两个单独的索引。
聚簇索引是决定表中记录的存储顺序的索引,与其包含的字段数无关。您应该已经在主键上有一个聚簇索引,因此您无法为该表创建另一个聚簇索引。