gpt4 book ai didi

SQL IF EXISTS 带 OR 条件

转载 作者:行者123 更新时间:2023-12-04 21:48:50 27 4
gpt4 key购买 nike

我遇到了 SQL 语句的性能问题。我注意到其中一个过程中的一条 SQL 语句的性能下降。

SQL语句:

IF EXISTS(SELECT TOP 1 FROM TABLE1 WHERE COLUMN1 = 'XYZ')  OR @ISALLOWED = 1
BEGIN
-- SQL Statements
END

我无法理解为什么带有 IF Exists 语句的 OR 语句会导致上述查询出现性能问题。因为如果我这样重写上面的语句:

DECLARE @ISVALUEEXISTS BIT
SET @ISVALUEEXISTS = 0

IF EXISTS(SELECT TOP 1 FROM TABLE1 WHERE COLUMN1 = 'XYZ')
SET @ISVALUEEXISTS = 1

IF (@ISVALUEEXISTS = 1 OR @ISALLOWED = 1 )
BEGIN
--SQL Statements
END

然后性能问题就消失了。所以,我无法理解 IF Exists 语句的 OR 条件如何以及为什么会导致问题。

有人对此有任何想法吗?

最佳答案

如果你在存储过程中有这个查询,这可能是因为 parameter sniffing .

尝试这样的事情来检查它:

declare @ISALLOWED_internal
select @ISALLOWED_internal = @ISALLOWED

IF EXISTS(SELECT TOP 1 FROM TABLE1 WHERE COLUMN1 = 'XYZ') OR @ISALLOWED_internal = 1
BEGIN
-- SQL Statements
END

关于SQL IF EXISTS 带 OR 条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29281762/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com