('xyz'!='xyz')和NOT('xyz'='xyz')之间有什么区别

萨钦

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

尽管我在Oracle DB的上下文中询问,但也想在其他语言中也了解相同的情况。

差异主要是处理速度和所有背景材料。

Lalit Kumar B

你有什么区别吗?

测试用例:

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

no rows selected

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

no rows selected

在以上两个查询中,应用的过滤器都是相同的filter(NULL IS NOT NULL)

执行计划:

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>

没有不同。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章