首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果存在带有OR条件的SQL

如果存在带有OR条件的SQL
EN

Stack Overflow用户
提问于 2015-03-26 14:58:50
回答 1查看 7.8K关注 0票数 3

我面临SQL语句的性能问题。我注意到在一个过程中的一个SQL语句中出现了性能下降。

SQL语句:

代码语言:javascript
复制
IF EXISTS(SELECT TOP 1 FROM TABLE1 WHERE COLUMN1 = 'XYZ')  OR @ISALLOWED = 1
BEGIN
    -- SQL Statements
END

我无法理解为什么OR语句在上面的查询中会导致性能问题。因为如果我像这样重写上面的语句:

代码语言:javascript
复制
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

那么性能问题就消失了。因此,我无法理解如果存在语句的OR条件是如何和为什么会导致问题的。

有人知道这事吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-03-26 15:03:22

如果您在存储过程中有此查询,这可能因为参数嗅探而发生。

尝试这样的方法来检查它:

代码语言:javascript
复制
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
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29281762

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档