【发布时间】:2016-01-12 16:14:58
【问题描述】:
我可能没有正确地提出这个问题。通过使用,我并不是指我应该在何时何地在桌子上创建一个——这将是一个过于宽泛的问题。
我的意思是,一旦我创建了一个聚集索引,它会总体上提高性能还是我需要在查询中使用关联的列来获得性能提升?
这是一个示例:假设我创建了一个包含以下列的表; RowNum、FileId、名称和日期。我创建为标识列的 RowNum 并应用聚集索引。但是,在实践中,通常使用 FileId 查询表。例如:
SELECT
FileId,
Name
FROM MyTable
WHERE FileId IN ('11101101', '11101201', '11101301')
由于查询中没有使用 RowNum,我是否还能从索引中获得任何性能优势?
如果这是一个基本问题,请提前道歉。我一直在阅读约束和索引,我想确定我理解它们。这似乎是我阅读的所有内容中都掩盖的一点。
编辑:我想我已经得到了答案。或者至少与我将获得的明确答案一样接近。
让我稍微重申一下这个问题:我试图解决的是假设我有一个包含三列的表,rowNum、Id 和 Name。该表通常会根据 Id 或 Name 进行查询,让我们更进一步说,我们将在每一列上都有非聚集索引。我的问题是,在这种情况下,rowNum 上的聚集索引是否会提高使用其他列的查询的性能。
据我所知,答案是肯定的,但您可能需要考虑将聚集索引放在另一列上。
这是一个非常广泛的问题,我很欣赏大家提供的见解。我已经接近一个好的答案,因为我将获得相关事实,而且我现在对索引更加了解。再次感谢!
【问题讨论】:
-
阅读 Kimberly Tripp 的 The Clustered Index Debate Continues.... - 她表明,精心挑选的聚集索引可以加快您的所有操作 - 是的,甚至 @ 987654325@或
DELETE操作!阅读 Kimberly 关于聚集索引的所有精彩文章 - 她是索引女王并且真正了解她的东西!你会从她的博文中学到很多东西
标签: sql-server tsql clustered-index