SELECT查询的性能,以检查表中是否存在记录

时间:2015-09-17 06:16:27

标签: sql sql-server sql-server-2012

让我们说我的[用户]表格,我想检查该表格中是否存在该电子邮件。以下两个查询之间是否有任何差异?哪一个会快速执行,为什么?

选项1

DECLARE @EXIST as bit

SELECT TOP 1 @EXIST = 1 
FROM [dbo].[User]
WHERE UserEmail = N'email@email.com'

选项2

DECLARE @EXIST as bit
SELECT @EXIST = 1 
FROM [dbo].[User]
WHERE UserEmail = N'email@email.com'

我认为选项1可能因为TOP 1而更快,但不完全确定,因为我不是SQL专家。

1 个答案:

答案 0 :(得分:1)

您可以使用Exists子句,因为它专门用于存在检查。

IF EXISTS(SELECT 1 FROM FROM [dbo].[User] WHERE UserEmail = N'email@email.com') SET @EXIST = 1

如果您打算只选择2个选项,那么请选择-1,因为当我们选择选项-2时,如果您的表包含给定电子邮件的重复记录,则可能会出现错误。

我们必须在做出任何决定之前检查执行计划。

相关问题