Oracle Natural tritt bei und zählt (1)

Weiß jemand, warum in Oracle 11g, wenn Sie eine Zählung (1) mit mehr als einer natürlichen Verknüpfung durchführen, eine kartesische Verknüpfung ausgeführt und die Zählung abgebrochen wird?

Sowie

<code>SELECT Count(1) FROM record NATURAL join address NATURAL join person WHERE status=1
AND code = 1 AND state = 'TN'
</code>

Dies zieht sich wie 3 Millionen Zeilen zurück, wenn

<code>SELECT * FROM record NATURAL join address NATURAL join person WHERE status=1
AND code = 1 AND state = 'TN'
</code>

zieht sich wie 36000 Zeilen zurück, was der richtigen Menge entspricht.

Vermisse ich nur etwas?

Hier sind die Tabellen, die ich verwende, um dieses Ergebnis zu erhalten.

<code>CREATE TABLE addresses (
address_id           NUMBER(10,0)  NOT NULL,
address_1            VARCHAR2(60)  NULL,
address_2            VARCHAR2(60)  NULL,
city                 VARCHAR2(35)  NULL,
state                CHAR(2)       NULL,
zip                  VARCHAR2(5)   NULL,
zip_4                VARCHAR2(4)   NULL,
county               VARCHAR2(35)  NULL,
phone                VARCHAR2(11)  NULL,
fax                  VARCHAR2(11)  NULL,
origin_network       NUMBER(3,0)   NOT NULL,
owner_network        NUMBER(3,0)   NOT NULL,
corrected_address_id NUMBER(10,0)  NULL,
"HASH"                 VARCHAR2(200) NULL
);

CREATE TABLE rates (
rate_id      NUMBER(10,0) NOT NULL,
eob          VARCHAR2(30) NOT NULL,
network_code NUMBER(3,0)  NOT NULL,
product_code VARCHAR2(2)  NOT NULL,
rate_type    NUMBER(1,0)  NOT NULL
);

CREATE TABLE records (
pk_unique_id      NUMBER(10,0) NOT NULL,
rate_id           NUMBER(10,0) NOT NULL,
address_id        NUMBER(10,0) NOT NULL,
effective_date    DATE         NOT NULL,
term_date         DATE         NULL,
last_update       DATE         NULL,
status            CHAR(1)      NOT NULL,
network_unique_id VARCHAR2(20) NULL,
rate_id_2         NUMBER(10,0) NULL,
contracted_by     VARCHAR2(50) NULL,
contract_version  VARCHAR2(5)  NULL,
bill_address_id   NUMBER(10,0) NULL
);
</code>

Ich sollte erwähnen, dass dies in Oracle 9i kein Problem war, aber als wir auf 11g umgestiegen sind, wurde es zu einem Problem.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage