| Oracle FAQ | Your Portal to the Oracle Knowledge Grid | |
Home -> Community -> Usenet -> c.d.o.misc -> Re: Improve this querry!?
"mcstock" <mcstockspamplug_at_spamdamenquery.com> wrote in message news:<D4adnaFGlJ7IIC-iRVn-tg_at_comcast.com>...
> 'AND medstatus NOT in ('T')' will very likely not use an index
>
> there's no reason why
> 'AND medstatus like 'S%')' won't work -- looks like you weren't using the
> 'LIKE' operator, but the IN operator
>
> 1) try LIKE 'S%'
> 2) post the plan
19:14:08 SQL> select operation, options, object_name, id, parent_id, position from plan_table;
OPERATION OPTIONS
OBJECT_NAME ID PARENT_ID POSITION
------------------------------ ------------------------------
------------------------------ ---------- ---------- ----------
SELECT STATEMENT
0 6
NESTED LOOPS
1 0 1
TABLE ACCESS BY INDEX ROWID
MED_MT_TB 2 1 1
INDEX RANGE SCAN PKYMT01
3 2 1
FILTER
4 3 1
TABLE ACCESS FULL
MRD_MT_TB 5 4 1
TABLE ACCESS BY INDEX ROWID
MRD_MT_TB 6 1 2
INDEX RANGE SCAN PKYMT03
7 6 1
8 rows selected.
That's the plan for this query that took 104 seconds to run. Way too slow.
explain plan for
SELECT /*+ INDEX(MED_MT_TB IX0101) */
med.inputserialnumber,
inputconnectionnumber,
rejectedmessage,
destinationnumber,
mrdstatus,
medstatus
FROM
mrd_mt_tb mrd,
med_mt_tb med
WHERE
mrd.inputserialnumber = med.inputserialnumber(+)
AND med.inputserialnumber > HEXTORAW('3FB0349000000000') --
Mon Nov 11 01:00:00
AND med.inputserialnumber < HEXTORAW('3FB036E800000000') --
Mon Nov 11 01:10:00
AND medstatus <> 'T'
AND med.inputserialnumber NOT IN
(SELECT /*+ HASH_AJ */
med.inputserialnumber
FROM
mrd_mt_tb
WHERE
mrdstatus IS NOT NULL)
![]() |
![]() |