我正在使用MySQL数据库,但这个问题可能适用于SQL,Oracle等。
我有一个产品表,其中一个列是品牌,我给用户选择他想要的品牌的可能性。我的问题就是,最好是在查询中选择该表中与所选品牌匹配的所有结果,或者查询从该表中选择与未选择的品牌不匹配的所有结果?
因此,
寻找等于某事物的结果更有效/更快(或相同) 不平等?为什么......
答案 0 :(得分:2)
效果是使用=
的一个原因。这有两个组成部分。首先是索引,其中=
比较提供更强大的索引功能。第二个是分区。虽然只有少数值的列不太可能,但=
更适合解析分区。
另一个原因是语义。 NULL
的存在可能令人困惑。考虑两个比较:
where col = 'x'
where col <> 'x'
这两个where
子句都会过滤掉col
为NULL
的值。这与=
完全一致。但是,即使您知道规则,它也会与<>
有点混淆。直觉上,我们认为“NULL
不等于”x“,所以它应该是真的”。实际上,NULL
表示未知值,未知值可能等于'x'
,因此语句可能为真;实际上,它会返回NULL
,并将其过滤掉。
答案 1 :(得分:0)
从性能的角度来看,您可能希望使用equals来使用索引。
从逻辑的角度来看,使用'not equals'是危险的。在这种情况下,您可以删除意外数据。 1.检索品牌列表 2.将列表呈现给用户 另一个动作是插入一个新品牌X. 4.用户选择保留哪些品牌并按下删除。 5.品牌x被无意删除。