2016-10-19 185 views
-1

我是PL/SQL新手,我使用的是10.0.6.1796版本 你能告诉我是否有方法检查查询我的查询是否有笛卡尔连接?PL/SQL笛卡尔加入

启用警告时可以显示吗?

我很感激你能给我的任何帮助。

+5

向我们展示你的存储过程。也没有“PL/SQL”版本10.0.6.1796。而且从未有过Oracle 10.0发布。只有Oracle 10.1和Oracle 10.2 –

+5

如果您使用明确的“join”语法,而不是在'from'子句中使用逗号分隔表的旧隐式语法,则会发现意外生成笛卡尔积很难。另外,什么是版本10;是指PL/SQL Developer客户端? –

+0

['plsql'](http://stackoverflow.com/tags/plsql/info)标签用于Oracle PL/SQL编程语言。如果你的问题是关于[PL/SQL Developer](https://www.allroundautomations.com/plsqldev.html)第三方IDE,那么请使用['plsqldeveloper'](http://stackoverflow.com/tags/plsqldeveloper/info)标记。 –

回答

2

您可以查看解释计划:

SQL> select * from tab1 a, tab1 b; 

no rows selected 


Execution Plan 
---------------------------------------------------------- 
Plan hash value: 2439298300 

------------------------------------------------------------------------------------ 
| Id | Operation   | Name  | Rows | Bytes | Cost (%CPU)| Time  | 
------------------------------------------------------------------------------------ 
| 0 | SELECT STATEMENT  |    |  1 | 26 |  0 (0)| 00:00:01 | 
| 1 | MERGE JOIN CARTESIAN|    |  1 | 26 |  0 (0)| 00:00:01 | 
| 2 | INDEX FULL SCAN | SYS_C008913 |  1 | 13 |  0 (0)| 00:00:01 | 
| 3 | BUFFER SORT  |    |  1 | 13 |  0 (0)| 00:00:01 | 
| 4 | INDEX FULL SCAN | SYS_C008913 |  1 | 13 |  0 (0)| 00:00:01 | 
------------------------------------------------------------------------------------