Sql 前1名或存在-哪个更快?

Sql 前1名或存在-哪个更快?,sql,sql-server,tsql,Sql,Sql Server,Tsql,我在数据库中有一个表,有将近200万条记录。我需要找出是否有一个以上的记录可供客户使用。我有以下两个脚本: SELECT TOP 1 ex.exceptionId FROM exception AS ex WHERE ex.customerId='{1BF87745-DE00-47FF-9AC0-430BAF87679A}' AND ex.loanId IS NULL AND ex.statusType = 'required' AND ex.exceptionState <> 'N

我在数据库中有一个表,有将近200万条记录。我需要找出是否有一个以上的记录可供客户使用。我有以下两个脚本:

SELECT TOP 1 ex.exceptionId
FROM exception AS ex
WHERE ex.customerId='{1BF87745-DE00-47FF-9AC0-430BAF87679A}'
AND ex.loanId IS NULL
AND ex.statusType = 'required'
AND ex.exceptionState <> 'N'

SELECT (CASE WHEN EXISTS ( SELECT ex.exceptionId FROM exception AS ex
WHERE ex.customerId = '{1BF87745-DE00-47FF-9AC0-430BAF87679A}'
AND ex.loanId IS NULL
AND ex.statusType = 'required'
AND ex.exceptionState <> 'N') THEN 1 ELSE 0
END) AS CustomerExceptionCount
哪一个更快?为什么


非常感谢

你难道不想要这样的东西吗

DECLARE @MoreThanOne Bit;

SELECT @MoreThanOne = CASE WHEN count(*) > 1 THEN 1 ELSE 0 END
FROM
(
    SELECT TOP 2 1
    FROM [exception]
    WHERE [customerId] ='{1BF87745-DE00-47FF-9AC0-430BAF87679A}'
       AND [loanId] IS NULL
       AND [statusType] = 'required'
       AND [exceptionState] <> 'N'
) [FirstTwo]

尝试运行这些查询,您将获得查询所用的时间

SET STATISTICS TIME ON
SELECT TOP 1 ex.exceptionId
FROM exception AS ex
WHERE ex.customerId='{1BF87745-DE00-47FF-9AC0-430BAF87679A}'
AND ex.loanId IS NULL
AND ex.statusType = 'required'
AND ex.exceptionState <> 'N'
SET STATISTICS TIME OFF
GO
SET STATISTICS TIME ON
SELECT (CASE WHEN EXISTS ( SELECT ex.exceptionId FROM exception AS ex
WHERE ex.customerId = '{1BF87745-DE00-47FF-9AC0-430BAF87679A}'
AND ex.loanId IS NULL
AND ex.statusType = 'required'
AND ex.exceptionState <> 'N') THEN 1 ELSE 0
END) AS CustomerExceptionCount
SET STATISTICS TIME OFF

第一个查询不会回答您关于有多少记录的问题吗?这些记录是否用作子查询?因为它们看起来都不会告诉您想要什么。您是否尝试将查询与服务器查询分析器进行比较?您已经编写了两个查询。为什么不试试看呢?您可以查看执行计划来找出原因。这两个查询都不能回答1个以上的记录问题。他们都只回答一条或多条记录。