Sql-Server

為什麼 SQL Server 自動創建的統計資訊有時會包含主鍵?

  • February 10, 2021

我一直都知道 SQL Server 自動創建的統計資訊只包含一列。換句話說,它們不是多列統計資訊。

但是,今天我遇到了一些自動創建的具有兩列的統計資訊。第二列始終是表的主鍵。在同一個表上還有其他自動創建的統計資訊沒有第二列。

在此處輸入圖像描述

sys.stats 表上的 auto_created = 1。

此外,某些統計資訊在完全相同的表上具有不同的命名約定。其中一些在統計名稱中具有列名稱。是什麼讓 SQL 使用不同的命名約定?例如,

  • _WA_Sys_BegEffDate_7363C5E4
  • _WA_Sys_0000000B_7363C5E4

這些不會引起問題,我只是對此感到好奇。

我花了相當多的時間在我自己的一些數據庫上尋找不同命名約定的解釋,但沒有找到任何確定的東西。

話雖如此,在我們這兩種情況下,我們都在處理多年來經歷了許多升級的非常古老的數據庫。我最好的猜測是,在某些時候,Microsoft 將自動創建的統計資訊切換為使用增量字母數字模式,而不是使用部分列名(SQL Server 2000 或 2005 附近的某個地方?)。這樣做可能是為了減少命名衝突的可能性或更好地處理列的重命名。

我還沒有看到將主鍵添加到自動創建的統計資訊中,但這也可能是一個非常舊的版本的產物。

引用自:https://dba.stackexchange.com/questions/285129