Oracle FAQ | Your Portal to the Oracle Knowledge Grid |
![]() |
![]() |
Home -> Community -> Mailing Lists -> Oracle-L -> Re: Optimizer change from 8i-9i
Hi,=20
About the RBO change in 9i, can you show me a test case?
I did some test, I can't prove it changed, but I can't prove it
unchanged, as it is more difficult.
Test SQL:
select * from=20
(select id,name from test where id<1000)
where id>10000
/
In RBO, oracle always run the inner subquery then filter with
ID>10000. The same behavior in 8i/9i.
But in 9i if I convert to CBO, there is no lio, as oracle CBO seems
pre-evaluate the subquery and merge the view.
For point 2, we are using migration script to do upgrade, we don't use exp/imp, so there is no such kind of concern.
THanks
Chao
SQL> @testcase
SQL> CREATE TABLE TEST(ID NUMBER, NAME VARCHAR2(300));
Table created.
SQL> begin for i in 1..10000 loop insert into test values(i,'aa'); end
loop; end ;
2 /
PL/SQL procedure successfully completed.
SQL> COMMIT; Commit complete.
SQL>=20 SQL> SET AUTOTRACE ON SQL>=20 SQL> select * from
no rows selected
Execution Plan
0 SELECT STATEMENT Optimizer=3DCHOOSE 1 0 TABLE ACCESS (FULL) OF 'TEST' Statistics
0 recursive calls 0 db block gets 24 consistent gets 0 physical reads 0 redo size 270 bytes sent via SQL*Net to client 372 bytes received via SQL*Net from client 1 SQL*Net roundtrips to/from client 0 sorts (memory) 0 sorts (disk) 0 rows processed
SQL>=20
SQL> ANALYZE TABLE TEST COMPUTE STATISTICS;
Table analyzed.
SQL> select * from
2 (select id,name from test where id<1000)
3 where id>10000
4 /
no rows selected
Execution Plan
0 SELECT STATEMENT Optimizer=3DCHOOSE (Cost=3D4 Card=3D1 Bytes=3D5)
1 0 FILTER
2 1 TABLE ACCESS (FULL) OF 'TEST' (Cost=3D4 Card=3D1 Bytes=3D5)
Statistics
0 recursive calls 0 db block gets 0 consistent gets 0 physical reads 0 redo size 270 bytes sent via SQL*Net to client 372 bytes received via SQL*Net from client 1 SQL*Net roundtrips to/from client 0 sorts (memory) 0 sorts (disk) 0 rows processed
On 5/10/05, Christian Antognini <Christian.Antognini_at_trivadis.com> wrote:
>=20
> >>1. For SQLs using RBO, the plan for the existing SQL won''t change, > >>right? As oracle says no change for RBO since oracle 7.3. > > > >Wrong. You could see some differences.
> Let me precise this point...
--=20
Regards
Zhu Chao
www.cnoug.org
-- http://www.freelists.org/webpage/oracle-lReceived on Tue May 10 2005 - 01:13:26 CDT
![]() |
![]() |