我有一个关于平等和不平等的简单的表现相关问题。根据过去的经验,我了解到任何Eq条件都能更好地工作,或者条件会导致一些性能问题。
当我查看两者的查询计划时,并排执行时都有扫描类型的EQ
做了同样的查询计划。如果我的查询格式为NOT(A=B and C=D)
或只使用(A <> B or C<> D)
最好的方法是什么?
这里没有想到空值,但这里有区别。
SELECT 1 WHERE NOT(2=1 AND NULL=2)
SELECT 1 WHERE NOT(2=1 AND 3=NULL)
SELECT 1 WHERE NOT(2=1 AND NULL=2)
SELECT 1 WHERE NOT(1=1 AND 3=NULL)
SELECT 1 WHERE NOT(NULL=1 AND 2=2)
SELECT 1 WHERE NOT(NULL=null AND 2=2) --Point to note is his one. False, True
SELECT 1 WHERE NOT(1=1 AND 3=3)
SELECT 1 WHERE (2<>1 OR NULL<>2)
SELECT 1 WHERE (2<>1 OR 3<>NULL)
SELECT 1 WHERE (2<>1 OR NULL<>2)
SELECT 1 WHERE (1<>1 OR 3<>NULL)
SELECT 1 WHERE (NULL<>1 OR 2<>2)
SELECT 1 WHERE (NULL<>null or 2=2) --Point to note is his one. True, True
SELECT 1 WHERE (1<>1 OR 3<>3)
答案 0 :(得分:2)
对于简单的比较,我希望这些具有相同的执行计划。 OR
往往会阻止使用索引。但是,索引不太可能用于非等号。