Sql where子句中的重复条件
我只想知道SQL Server是如何执行此查询的:Sql where子句中的重复条件,sql,sql-server,Sql,Sql Server,我只想知道SQL Server是如何执行此查询的: Select * from sampletable where id = 2 and name = 'xyz' and id = 2; 您可以看到,id=2在上述查询中出现两次。SQL Server会忽略重复的条件,还是会执行两次 重复条件检查是否会以任何方式影响性能 就我所见,如果id等于2,查询将忽略名称,因为列id放在两种不同的情况下这对于SQL引擎来说不是问题,因为SQL语句解析器只会忽略第二种情况 关于性能,也不会有
Select *
from sampletable
where id = 2
and name = 'xyz'
and id = 2;
您可以看到,id=2
在上述查询中出现两次。SQL Server会忽略重复的条件,还是会执行两次
重复条件检查是否会以任何方式影响性能 就我所见,如果id等于2,查询将忽略名称,因为列id放在两种不同的情况下这对于SQL引擎来说不是问题,因为SQL语句解析器只会忽略第二种情况
关于性能,也不会有任何重大影响,因为SQL语句解析阶段与实际的数据检索相比只是时间的一小部分。查询时应非常小心。而且不会自动组合在一起。因此,如果您的查询中存在重复项,那么您是在做一些非常错误的事情。答案是这可能取决于……但是如果您可以看到您的
WHERE
子句具有冗余,那么为什么不修复它们呢?这只是一个示例查询,在我的项目中,我们动态生成过滤器(基于不同的组件),在那里我可以看到重复的情况。我只是想知道它会影响性能还是会引起任何形式的问题。请参阅执行计划。