有什么区别('xyz' != 'xyz')
和NOT ('xyz' = 'xyz')
尽管我在Oracle DB的上下文中询问,但也想在其他语言中也了解相同的情况。
差异主要是处理速度和所有背景材料。
你有什么区别吗?
测试用例:
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] 删除。
我来说两句