Tsql 当存在聚集(PK)索引时,非聚集索引的性能是否会提高?

Tsql 当存在聚集(PK)索引时,非聚集索引的性能是否会提高?,tsql,indexing,Tsql,Indexing,我有一个非常大的表,上面有两个索引,但没有PK(聚集)索引 如果表上还有聚集索引,即使我必须从标识列“设计”一个聚集索引,这两个索引的性能会提高吗?一个精心选择的聚集索引可以为您的性能创造奇迹。为什么?聚集索引定义了数据在硬盘上的物理存储方式。选择一个好的聚集索引将确保获得顺序IO而不是随机IO。因此,这是一个巨大的性能增益,因为大多数数据库设置中的瓶颈是硬盘驱动器和IO操作 尝试在联接经常使用的值上创建聚集索引 如果您只是将它放在主键上,您的性能仍然会提高,因为非集群将使用集群进行查找操作,这

我有一个非常大的表,上面有两个索引,但没有PK(聚集)索引


如果表上还有聚集索引,即使我必须从标识列“设计”一个聚集索引,这两个索引的性能会提高吗?

一个精心选择的聚集索引可以为您的性能创造奇迹。为什么?聚集索引定义了数据在硬盘上的物理存储方式。选择一个好的聚集索引将确保获得顺序IO而不是随机IO。因此,这是一个巨大的性能增益,因为大多数数据库设置中的瓶颈是硬盘驱动器和IO操作

尝试在联接经常使用的值上创建聚集索引

如果您只是将它放在主键上,您的性能仍然会提高,因为非集群将使用集群进行查找操作,这将避免表扫描


希望这能回答您的问题

精心挑选的聚集索引可以为您的性能创造奇迹。为什么?聚集索引定义了数据在硬盘上的物理存储方式。选择一个好的聚集索引将确保获得顺序IO而不是随机IO。因此,这是一个巨大的性能增益,因为大多数数据库设置中的瓶颈是硬盘驱动器和IO操作

尝试在联接经常使用的值上创建聚集索引

如果您只是将它放在主键上,您的性能仍然会提高,因为非集群将使用集群进行查找操作,这将避免表扫描


希望这能回答您的问题

与此相反,非聚集索引会受到聚集索引的影响:


但是,如果您设法用聚集索引替换一个非聚集索引,则总体性能可能会提高…或降低。实际上,这取决于您的工作负载。

与此相反,非聚集索引会受到聚集索引的影响:


但是,如果您设法用聚集索引替换一个非聚集索引,则总体性能可能会提高…或降低。确实取决于您的工作负载。

查看数据库[我继承了它:(]并且大多数表都有很多合理的索引,但没有PK/聚集索引。可能有,也可能没有。您应该复制一份,尝试应用聚集索引,然后从系统中针对它运行一个实际的工作负载。另外-a)您不需要直接对自己的问题/答案发表评论-如果您还有更多需要添加的内容,请使用编辑链接,并且b)您应该避免将主键和聚集索引混为一谈。这两个概念是不同的。堆(没有聚集索引的表)上需要RID查找的select语句在有聚集索引时将使用书签查找。有人认为书签查找不如RID查找有效。所有这些都是在特定的场景和工作负载下进行的。您确实需要在测试系统中进行一些分析。观察并比较查询计划和性能。请添加有关使用数据库的系统的更多信息。它是重读系统还是重写系统?如果它是一个具有多个插入的系统,则不希望在没有内部顺序(如GUID)的列上创建聚集索引,因为数据库是根据聚集键进行物理排列的。查看数据库[我继承了它:(]而且大多数表都有很多合理的索引,但没有PK/聚集索引。它可能有,也可能没有。您应该复制一份,尝试应用聚集索引,并从系统中针对它运行一个实际的工作负载。此外-a)您不必直接对自己的问题/答案发表评论-如果您有更多需要添加的内容,请使用编辑链接,b)应避免将主键和聚集索引合并。这两个概念是不同的。堆(没有聚集索引的表)上需要RID查找的select语句在有聚集索引时将使用书签查找。有人认为书签查找不如RID查找有效。所有这些都是在特定的场景和工作负载下进行的。您确实需要在测试系统中进行一些分析。观察并比较查询计划和性能。请添加有关使用数据库的系统的更多信息。它是重读系统还是重写系统?如果它是一个具有多个插入的系统,则不希望在没有内部顺序(如GUID)的列上创建聚集索引,因为数据库是根据聚集键进行物理排列的。