0

所以我很想知道是否值得在具有大约 30M 行数据的堆表上创建聚集索引。在此之前,它不会在我们拥有的任何应用程序中使用,但现在我们正在创建一个应用程序来查询该表。

我之所以问是否值得,是因为我们正在创建的应用程序基本上是在做这种类型的查询。

SELECT *
FROM [table];

我留下 * 表示我们基本上在拉所有字段。

所以我的问题是,即使我们将为我们的应用程序选择所有字段和行,是否值得在没有聚集索引的表上创建聚集索引?

感谢您提供任何信息/建议。

4

1 回答 1

1

不,这不值得。如果您要运行select不带where子句的索引,则聚集索引只会向页面文件添加更多数据,具体取决于您为索引选择的内容(这完全取决于您的数据)。创建更大的表扫描。在许多情况下(如果您只是从表中获取所有行而不使用某种连接/wheres/filter 子句),堆表实际上是更好的性能,因为它存储在较少的页面文件中。

拥有一个聚集索引,当它不被使用时,也会在更新/创建表上的统计信息和进行插入(页面拆分)时承担一些开销

因此,如果您不打算使用索引,并且不打算在您的表上进行过滤,那么最好不要使用索引

于 2013-08-30T14:24:21.720 回答