sql-server - SQL Server 索引 - HEAP 上的非聚集索引

标签 sql-server sql-server-2005 indexing clustered-index

我们的 SQL 数据库中有 221GB 的表,主要是重复数据。

团队已在堆上创建非聚集索引。这真的对性能有帮助吗?

我们是否应该将 IDENTITY 列放入表中,然后创建聚集索引,然后我们可以创建非聚集索引。

最佳答案

视情况而定

关于数据的使用模式和结构。

非聚集索引是否覆盖?

表中的数据有变化吗?

具有覆盖的非聚集索引(或多个索引)的堆表可以优于聚集索引,其中聚集索引是唯一的“索引”(聚集索引显然总是覆盖,但对于搜索可能不是最佳选择) )

请记住,聚集索引不是索引(在基于键查找数据存储位置的意义上),它是通过选择索引组织的整个表。在真正的(非聚集)索引中,只有键和包含的列包含在索引中,这意味着(通常)每个数据库页可以存储更多行,并且不必要地读取更少的数据。

大多数表都应该有聚集索引,但非聚集索引的选择才是大部分性能的来源。

关于sql-server - SQL Server 索引 - HEAP 上的非聚集索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7650321/

相关文章:

sql-server - 消息 8152,字符串或二进制数据将被截断

sql-server - SSIS "Enumerator failed to retrieve element at index"错误

c# - 在 C# 中使用带有变量名的 SQLHelper 创建表

分组数据的 SQL 增量更新

python - 为什么你可以将列表切片超过总索引计数,但不能直接检索所述索引?

database - 如何在postgres中实现全名搜索

sql - 如何将列转换为行或反之亦然

sql-server-2005 - 如何将慢速参数化插入更改为快速批量复制(甚至从内存中)

c++ - TokuMX 中的部分索引

sql-server - MS SQL 服务器的日期/时间值字符串表示的独立格式?