2016-10-19 3 views
-1

Ich bin neu in PL/SQL und ich verwende Version 10.0.6.1796 Können Sie mir sagen, ob es eine Möglichkeit gibt zu überprüfen, ob meine Abfrage eine kartesische Verbindung hat?PL/SQL Cartesian Beitreten

Kann dies beim Aktivieren von Warnungen angezeigt werden?

Ich schätze jede Hilfe, die Sie mir geben können.

+5

Zeigen Sie uns Ihre gespeicherten Prozedur. Auch gibt es keine Version 10.0.6.1796 von "PL/SQL". Und es gab nie eine Oracle 10.0-Version. Es gab nur Oracle 10.1 und Oracle 10.2 –

+5

Wenn Sie explizite 'Join'-Syntax anstelle der alten impliziten Syntax verwenden, bei der Sie durch Komma getrennte Tabellen in der' from'-Klausel haben, wird es viel schwieriger, ein kartesisches Produkt zu erzeugen . Auch Version 10 von was; bezieht sich das auf den PL/SQL Developer Client? –

+0

Das Tag "plsql" (http://stackoverflow.com/tags/plsql/info) steht für die Programmiersprache Oracle PL/SQL. Wenn Ihre Frage zu [PL/SQL Developer] (https://www.allroundautomations.com/plsqldev.html) der IDE von Drittanbietern lautet, verwenden Sie bitte den ['plsqldeveloper'] (http://stackoverflow.com/tags/plsqldeveloper/info) Tag stattdessen. –

Antwort

2

Sie können den Plan erklären überprüfen:

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 | 
------------------------------------------------------------------------------------