Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL Server-如何查找聚集索引是否存在_Sql_Sql Server - Fatal编程技术网

SQL Server-如何查找聚集索引是否存在

SQL Server-如何查找聚集索引是否存在,sql,sql-server,Sql,Sql Server,我们有500多个表,希望确定哪些表没有主键。因为在大表上创建索引将有助于提高性能 必需的命令-标识为堆的表(因为它们没有聚集索引) 问候 SELECT OBJECT_NAME(object_id) FROM sys.indexes WHERE index_id=0 AND OBJECTPROPERTY(object_id, 'IsUserTable') = 1 查找所有堆。这个问题与PK是否存在是正交的。堆可以有一个非聚集PK,而聚集索引不一定是PK。要查找没有PK的表,可以使用 SE

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

必需的命令-标识为堆的表(因为它们没有聚集索引)

问候

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
) 

PK可以是
聚集的
非聚集的
唯一索引。因此,您可以拥有具有PK但不具有聚集索引的表。