首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在进行查询时,使用equal还是not更好?

在进行查询时,使用equal还是not更好?
EN

Stack Overflow用户
提问于 2016-06-09 23:03:21
回答 2查看 4.4K关注 0票数 2

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

我有一个有产品的表格,其中一个列是品牌,我给用户选择他想要的品牌的可能性。我的问题来了,是应该进行一个查询,从该表中选择与所选品牌匹配的所有结果,还是进行一个查询,从该表中选择与未选定的品牌不匹配的所有结果?

因此,

寻找等于或不相等的结果是更有效/更快(或同样)吗?还有为什么..。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-06-10 00:23:15

性能是使用=的原因之一。这有两个组成部分。首先是索引,其中=比较提供了更强大的索引功能。第二种是分区。虽然在只需要几个值的列上不太可能,但=更适合解析分区。

另一个原因是语义。NULL的存在可能会让人感到困惑。考虑这两种比较:

代码语言:javascript
复制
where col = 'x'
where col <> 'x'

这两个where子句都筛选出colNULL的值。对于=来说,这是完全合理的。然而,即使在您了解了规则之后,它还是有点与<>混淆。直觉上,我们认为"NULL不等于x“,所以应该是真的。实际上,NULL意味着一个未知的值,一个未知的值可能等于'x',所以语句可能是真的;实际上,它返回被过滤掉的NULL

票数 6
EN

Stack Overflow用户

发布于 2016-06-09 23:33:48

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

从逻辑的角度来看,使用“不等于”是危险的。在此场景中,您可以删除意外数据。1.检索品牌列表。2.将列表呈现给用户3。另一个操作插入一个新品牌X4。用户选择保留哪些品牌并按删除。5.品牌x被无意删除。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37737550

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档