首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >('xyz‘!= 'xyz')和不是('xyz’= 'xyz')有什么区别?

('xyz‘!= 'xyz')和不是('xyz’= 'xyz')有什么区别?
EN

Stack Overflow用户
提问于 2015-03-03 09:41:01
回答 1查看 136关注 0票数 3

('xyz' != 'xyz')NOT ('xyz' = 'xyz')有什么区别吗?

虽然我询问的是Oracle DB的上下文,但也希望了解其他语言中的相同情况。

不同的主要是处理速度和所有的背景资料。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-03-03 09:45:53

你觉得有什么不同吗?

测试用例:

代码语言:javascript
复制
SQL> SELECT * FROM dual
  2  WHERE ('xyz' != 'xyz');

no rows selected

SQL>
SQL> SELECT * FROM dual
  2  WHERE NOT ('xyz' = 'xyz');

no rows selected

在上述两个查询中,应用的过滤器都是相同的过滤器(NULL不是NULL)

执行计划:

代码语言:javascript
复制
SQL> EXPLAIN PLAN FOR
  2  SELECT * FROM dual
  3  WHERE ('xyz' != 'xyz');

Explained.

SQL>
SQL> SELECT * FROM TABLE(dbms_xplan.display);

PLAN_TABLE_OUTPUT
--------------------------------------------------------------------------------
Plan hash value: 3752461848

---------------------------------------------------------------------------
| Id  | Operation          | Name | Rows  | Bytes | Cost (%CPU)| Time     |
---------------------------------------------------------------------------
|   0 | SELECT STATEMENT   |      |     1 |     2 |     0   (0)|          |
|*  1 |  FILTER            |      |       |       |            |          |
|   2 |   TABLE ACCESS FULL| DUAL |     1 |     2 |     2   (0)| 00:00:01 |
---------------------------------------------------------------------------

Predicate Information (identified by operation id):

PLAN_TABLE_OUTPUT
--------------------------------------------------------------------------------
---------------------------------------------------

   1 - filter(NULL IS NOT NULL)

14 rows selected.

SQL>
SQL> EXPLAIN PLAN FOR
  2  SELECT * FROM dual
  3  WHERE NOT ('xyz' = 'xyz');

Explained.

SQL>
SQL> SELECT * FROM TABLE(dbms_xplan.display);

PLAN_TABLE_OUTPUT
--------------------------------------------------------------------------------
Plan hash value: 3752461848

---------------------------------------------------------------------------
| Id  | Operation          | Name | Rows  | Bytes | Cost (%CPU)| Time     |
---------------------------------------------------------------------------
|   0 | SELECT STATEMENT   |      |     1 |     2 |     0   (0)|          |
|*  1 |  FILTER            |      |       |       |            |          |
|   2 |   TABLE ACCESS FULL| DUAL |     1 |     2 |     2   (0)| 00:00:01 |
---------------------------------------------------------------------------

Predicate Information (identified by operation id):

PLAN_TABLE_OUTPUT
--------------------------------------------------------------------------------
---------------------------------------------------

   1 - filter(NULL IS NOT NULL)

14 rows selected.

SQL>

没什么区别。

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

https://stackoverflow.com/questions/28828457

复制
相关文章

相似问题

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