我正在使用一个MySQL数据库,但这个问题可能适用于SQL、Oracle等。
我有一个产品表,其中一列是品牌,我给用户选择他想要的品牌的可能性。我的问题来了,是让查询选择该表中与所选品牌匹配的所有结果,还是让查询选择该表中与未选择品牌不匹配的所有结果?
因此,
寻找与某物相等的结果是否更有效/更快(或相同)
不平等?为什么。。。
最佳答案
性能是使用=
的原因之一。有两个组成部分。首先是索引,其中=
比较提供更强大的索引能力。第二个是分区。虽然对于只接受少量值的列来说不太可能,=
对于解析分区来说更好。
另一个原因是语义。NULL
s的存在可能令人困惑。考虑两个比较:
where col = 'x'
where col <> 'x'
这两个
where
子句都过滤掉col
是NULL
的值。对于=
,这完全有意义。然而,即使在您了解了规则之后,它也会与<>
有点混淆。直觉上,我们认为“NULL
不等于”x“,所以应该是真的”。实际上,NULL
表示一个未知值,一个未知值可以等于'x'
,因此该语句可能是真的;实际上,它返回的NULL
被过滤掉了。关于mysql - 进行查询时最好使用相等还是不相等?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37737550/