聚簇索引和覆盖查询

时间:2012-12-06 13:11:48

标签: tsql

我有一张包含年份,州和县的数据的表格。县标识符存储为FIPS代码,用于对州和县进行编码。

我已经在年份和县创建了一个CLUSTERED INDEX,我知道数据将以物理形式存储在该排列中。

问题

  • 由于数据是通过FIPS代码存储的,它们是否按状态顺序自动排列?

  • 在我看来,在State上添加非聚集索引不会让我获得任何东西。这是真的?

  • 更一般地说,如果我在几个变量上有一个聚簇索引,那么在索引的组件上包含WHERE,GROUP BY或ORDER BY子句的查询"覆盖",因此不要#&# 39; t需要索引吗?

1 个答案:

答案 0 :(得分:0)

在没有状态索引的情况下,查询无法知道状态是否正常 对state的查询不会使用year和fips上的复合索引。

国家将受益于指数 你可以在州上有一个单独的索引 或者在综合指数中包括州 - 年,州,FIPS。

假设你有一个复合索引col1,col2,col3。 col3就在哪里。查询可以使用复合索引,但它将是扫描。如果您有很多或关键的查询使用col3,那么在col3上放置一个索引,看看你是否获得了好处。你需要测试加载数据。另一个因素是,如果复合索引被大量使用,那么它可能已经存在于内存中。