Oracle FAQ | Your Portal to the Oracle Knowledge Grid |
Home -> Community -> Usenet -> c.d.o.server -> Sql not picking up primary key index
Hi,
I have the following table:
SQL> desc conferencebookings;
Name Null? Type ----------------------------------------- -------- -------------- F_BOOKINGID NOT NULL NUMBER(10) F_CONFERENCEDETID NOT NULL NUMBER(10) F_PATTERNID NOT NULL NUMBER(10) F_BOOKERTYPE NOT NULL NUMBER(2) F_BOOKER NOT NULL NUMBER(10) F_SOURCEIP VARCHAR2(32) F_ROOMNUMBER NOT NULL NUMBER(9) F_AUTOEXTEND NOT NULL NUMBER(2) F_OWNERID NUMBER(10) F_DTCREATED NOT NULL DATE F_DTSAVED NOT NULL DATE
f_bookingid is the index.
I run the following sql:
SELECT F_ROOMNUMBER
FROM CONFERENCEBOOKINGS B,CONFERENCES C
WHERE B.F_BOOKINGID = C.F_BOOKINGID
explain plan is:
SELECT STATEMENT Optimizer=FIRST_ROWS (Cost=91 Card=90 Bytes=1080) NESTED LOOPS (Cost=91 Card=90 Bytes=1080) TABLE ACCESS (FULL) OF CONFERENCEBOOKINGS (Cost=1 Card=90 Bytes=720) INDEX (RANGE SCAN) OF CF_I3 (NON-UNIQUE) (Cost=1 Card=90 Bytes=360) It uses full table scan, where I would expect it to use the index on the pk.
Now if I change the select to :
SELECT B.F_BOOKINGID
FROM CONFERENCEBOOKINGS B,CONFERENCES C
WHERE B.F_BOOKINGID = C.F_BOOKINGID
The explain plan now picks up the pk index:
SELECT STATEMENT Optimizer=FIRST_ROWS (Cost=26 Card=90 Bytes=720) NESTED LOOPS (Cost=26 Card=90 Bytes=720) INDEX (FULL SCAN) OF CF_I3 (NON-UNIQUE) (Cost=26 Card=90 Bytes=360) INDEX (UNIQUE SCAN) OF CFB_PK (UNIQUE) Any ideas ?? Received on Tue Sep 11 2001 - 06:40:14 CDT