PianoDan Asked: 2021-02-11 08:36:42 +0800 CST2021-02-11 08:36:42 +0800 CST 2021-02-11 08:36:42 +0800 CST 为什么 SQL Server 自动创建的统计信息有时会包含主键? 772 我一直都知道 SQL Server 自动创建的统计信息只包含一列。换句话说,它们不是多列统计信息。 但是,今天我遇到了一些自动创建的具有两列的统计信息。第二列始终是表的主键。在同一个表上还有其他自动创建的统计信息没有第二列。 sys.stats 表上的 auto_created = 1。 此外,某些统计信息在完全相同的表上具有不同的命名约定。其中一些在统计名称中具有列名称。是什么让 SQL 使用不同的命名约定?例如, _WA_Sys_BegEffDate_7363C5E4 _WA_Sys_0000000B_7363C5E4 这些不会引起问题,我只是对此感到好奇。 sql-server sql-server-2008-r2 1 个回答 Voted Best Answer LowlyDBA - John M 2021-02-11T12:13:11+08:002021-02-11T12:13:11+08:00 我花了相当多的时间在我自己的一些数据库上寻找不同命名约定的解释,但没有找到任何确定的东西。 话虽如此,在我们这两种情况下,我们都在处理多年来经历了许多升级的非常古老的数据库。我最好的猜测是,在某些时候,Microsoft 将自动创建的统计信息切换为使用增量字母数字模式,而不是使用部分列名(SQL Server 2000 或 2005 附近的某个地方?)。这样做可能是为了减少命名冲突的可能性或更好地处理列的重命名。 我还没有看到将主键添加到自动创建的统计信息中,但这也可能是一个非常旧的版本的产物。
我花了相当多的时间在我自己的一些数据库上寻找不同命名约定的解释,但没有找到任何确定的东西。
话虽如此,在我们这两种情况下,我们都在处理多年来经历了许多升级的非常古老的数据库。我最好的猜测是,在某些时候,Microsoft 将自动创建的统计信息切换为使用增量字母数字模式,而不是使用部分列名(SQL Server 2000 或 2005 附近的某个地方?)。这样做可能是为了减少命名冲突的可能性或更好地处理列的重命名。
我还没有看到将主键添加到自动创建的统计信息中,但这也可能是一个非常旧的版本的产物。