Sql 查询逻辑检查:计算数据库中的主键数

Sql 查询逻辑检查:计算数据库中的主键数,sql,sql-server,Sql,Sql Server,下面1、2和3的结果相同。只需要知道这两个查询都返回主键数的值,这一逻辑是否正确 一, 二, 三, 我认为这是更好的方法,因为第三个查询是正确的。但第二个查询需要修改,以添加检查以排除SYS表。Objects有系统表(所以我们需要添加一个检查),而信息模式不包括系统表 (二) 希望这也能帮助你 SELECT COUNT(*) [Ct_PK] FROM SYS.OBJECTS WHERE TYPE = 'PK' 不,它不是SQL Server的最佳选择。使用系统视图要好得多。阅读A

下面1、2和3的结果相同。只需要知道这两个查询都返回主键数的值,这一逻辑是否正确

一,

二,

三,


我认为这是更好的方法,因为第三个查询是正确的。但第二个查询需要修改,以添加检查以排除SYS表。Objects有系统表(所以我们需要添加一个检查),而信息模式不包括系统表

(二)


希望这也能帮助你

SELECT  COUNT(*) [Ct_PK]
FROM    SYS.OBJECTS 
WHERE   TYPE = 'PK'

不,它不是SQL Server的最佳选择。使用系统视图要好得多。阅读Aaron Bertrand的博客:
SELECT COUNT(*) AS 'PRIMARY_KEY_CONSTRAINT'
FROM sys.objects
WHERE type_desc IN ('PRIMARY_KEY_CONSTRAINT')
 SELECT Count(*)
    FROM   INFORMATION_SCHEMA.TABLE_CONSTRAINTS
    WHERE  CONSTRAINT_TYPE = 'PRIMARY KEY'
SELECT Count(*)
FROM   INFORMATION_SCHEMA.TABLE_CONSTRAINTS
WHERE  CONSTRAINT_TYPE = 'PRIMARY KEY' 
SELECT COUNT(*) AS 'PRIMARY_KEY_CONSTRAINT'
FROM sys.objects
WHERE type_desc IN ('PRIMARY_KEY_CONSTRAINT') AND is_ms_shipped <>1
SELECT Count(*)
FROM   INFORMATION_SCHEMA.TABLE_CONSTRAINTS
WHERE  CONSTRAINT_TYPE = 'PRIMARY KEY' 
SELECT  COUNT(*) [Ct_PK]
FROM    SYS.OBJECTS 
WHERE   TYPE = 'PK'