我们的 SQL 数据库中有 221GB 的表,主要是重复数据。
团队已在堆上创建非聚集索引。这真的对性能有帮助吗?
我们是否应该将 IDENTITY 列放入表中,然后创建聚集索引,然后我们可以创建非聚集索引。
最佳答案
视情况而定
关于数据的使用模式和结构。
非聚集索引是否覆盖?
表中的数据有变化吗?
具有覆盖的非聚集索引(或多个索引)的堆表可以优于聚集索引,其中聚集索引是唯一的“索引”(聚集索引显然总是覆盖,但对于搜索可能不是最佳选择) )
请记住,聚集索引不是索引(在基于键查找数据存储位置的意义上),它是通过选择索引组织的整个表。在真正的(非聚集)索引中,只有键和包含的列包含在索引中,这意味着(通常)每个数据库页可以存储更多行,并且不必要地读取更少的数据。
大多数表都应该有聚集索引,但非聚集索引的选择才是大部分性能的来源。
关于sql-server - SQL Server 索引 - HEAP 上的非聚集索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7650321/