具有相同 object_id 但名称不同的索引

And*_*dén 2 index sql-server t-sql

当我跑

SELECT
  count(object_id) AS count,
  object_id,
  min(name) as name1,
  max(name) AS name2
FROM
  sys.indexes
GROUP BY object_id HAVING COUNT(*) > 1 ORDER BY count
Run Code Online (Sandbox Code Playgroud)

我将获得具有相同object_id但不一定具有相同名称的索引列表。

不应该所有object_id具有相同名称的索引都具有相同的名称吗?

Ran*_*gen 8

Object_ID属于索引所属的对象如索引视图或表。

当你看object_id的在sys.indexes 文档

object_id - 此索引所属的对象的 ID。

如果要唯一标识索引,则需要Object_ID+index_id列或index_id特定object_id.

要验证这一点,您可以将该OBJECT_NAME()函数添加到您的查询中

SELECT
  count(object_id) AS count,
  object_id,
  OBJECT_NAME(object_id),
  min(name) as name1,
  max(name) AS name2
FROM
  sys.indexes
GROUP BY object_id HAVING COUNT(*) > 1 ORDER BY count;
Run Code Online (Sandbox Code Playgroud)