在进行查询时,使用相等或不相等是否更好?

时间:2016-06-09 23:03:21

标签: mysql sql database oracle

我正在使用MySQL数据库,但这个问题可能适用于SQL,Oracle等。

我有一个产品表,其中一个列是品牌,我给用户选择他想要的品牌的可能性。我的问题就是,最好是在查询中选择该表中与所选品牌匹配的所有结果,或者查询从该表中选择与未选择的品牌不匹配的所有结果?

因此,

  

寻找等于某事物的结果更有效/更快(或相同)   不平等?为什么......

2 个答案:

答案 0 :(得分:2)

效果是使用=的一个原因。这有两个组成部分。首先是索引,其中=比较提供更强大的索引功能。第二个是分区。虽然只有少数值的列不太可能,但=更适合解析分区。

另一个原因是语义。 NULL的存在可能令人困惑。考虑两个比较:

where col = 'x'
where col <> 'x'

这两个where子句都会过滤掉colNULL的值。这与=完全一致。但是,即使您知道规则,它也会与<>有点混淆。直觉上,我们认为“NULL不等于”x“,所以它应该是真的”。实际上,NULL表示未知值,未知值可能等于'x',因此语句可能为真;实际上,它会返回NULL,并将其过滤掉。

答案 1 :(得分:0)

从性能的角度来看,您可能希望使用equals来使用索引。

从逻辑的角度来看,使用'not equals'是危险的。在这种情况下,您可以删除意外数据。 1.检索品牌列表 2.将列表呈现给用户 另一个动作是插入一个新品牌X. 4.用户选择保留哪些品牌并按下删除。 5.品牌x被无意删除。