/* DROP TABLE emp purge; DROP TABLE dept purge; */ CREATE TABLE dept ( deptno NUMBER(10,0) NOT NULL PRIMARY KEY, dname VARCHAR2(14) NOT NULL ); INSERT INTO dept (deptno, dname) SELECT rownum deptno, dbms_random.string('U', 10) AS dname FROM dual CONNECT BY rownum <= 1000000; COMMIT; CREATE TABLE emp ( empno NUMBER(10,0) NOT NULL PRIMARY KEY, deptno NUMBER(10,0) NOT NULL REFERENCES dept (deptno), ename VARCHAR2(10) NOT NULL ); INSERT INTO emp (empno, deptno, ename) WITH g AS (SELECT rownum AS row_num FROM dual CONNECT BY ROWNUM <= 100000) SELECT rownum AS empno, round(dbms_random.value(1, 1000000), 0) AS deptno, dbms_random.string('U', 6) AS ename FROM g, g WHERE rownum <= 5000000; COMMIT; CREATE INDEX emp_dept_fk ON emp (deptno); BEGIN dbms_stats.gather_table_stats(ownname => USER, tabname => 'dept', method_opt => 'for all columns size 1'); dbms_stats.gather_table_stats(ownname => USER, tabname => 'emp', method_opt => 'for all columns size 1'); END; /