【问题标题】:SQL Server - How to find if clustered index existsSQL Server - 如何查找是否存在聚集索引
【发布时间】:2011-09-28 10:04:14
【问题描述】:

我们有 500 多个表,并且想要确定哪些表没有主键。因为在大表上创建索引将有助于提高性能。

必需命令 - 识别 HEAPS 表(因为它们没有聚集索引)

问候

【问题讨论】:

  • PK 可以是 CLUSTEREDNON-CLUSTERED 唯一索引。因此,您可以拥有带有 PK 但没有聚集索引的表。

标签: sql sql-server


【解决方案1】:
SELECT OBJECT_NAME(object_id)
FROM sys.indexes 
WHERE index_id=0 
  AND OBJECTPROPERTY(object_id, 'IsUserTable') = 1

查找所有堆。这个问题与PK是否存在是正交的。堆可以有一个非聚集的 PK,而聚集索引不一定是 PK。要查找没有 PK 的表,您可以使用。

SELECT *
FROM sys.tables t
WHERE NOT EXISTS
(
SELECT *
FROM sys.indexes i
WHERE is_primary_key=1 AND i.object_id = t.object_id
) 

【讨论】:

    猜你喜欢
    • 2011-04-12
    • 2011-08-17
    • 1970-01-01
    • 2023-04-11
    • 1970-01-01
    • 2011-06-02
    • 2018-06-27
    • 1970-01-01
    • 2013-05-20
    相关资源
    最近更新 更多