Oracle FAQ | Your Portal to the Oracle Knowledge Grid |
Home -> Community -> Usenet -> c.d.o.server -> Re: Avoiding full table scan
On 4 Jun 1998 22:36:53 GMT, "Frank Calfo" <fcalfo_at_psateam.com> wrote:
>The following update statement is producing a full table scan >on one of our largest tables: invdetail >
SET "SAILED_VESSEL_ID" = 'BB', "SAILED_VOYAGE_ID" = '1' WHERE (INVDETAILKEY, SEGMENT) IN ( SELECT "CERTLOG"."INVDETAILKEY", "CERTLOG"."INVDETAIL_SEGMENT" FROM "CERTLOG" WHERE ( "CERTLOG"."COID" = 'TEST' ) ANDAND
( "CERTLOG"."BURID" = 'PSSB' ) AND
( "CERTLOG"."CERTID" = 'TEST' ) AND
( "CERTLOG"."DATECERTEND" = SYSDATE ) AND
( "CERTLOG"."INVDETAILKEY" = "INVDETAIL"."INVDETAILKEY" )
or
try
UPDATE /*+ rule */
"INVDETAIL"
SET "SAILED_VESSEL_ID" = 'BB', "SAILED_VOYAGE_ID" = '1' WHERE (INVDETAILKEY, SEGMENT) IN ( SELECT "CERTLOG"."INVDETAILKEY", "CERTLOG"."INVDETAIL_SEGMENT" FROM "CERTLOG" WHERE ( "CERTLOG"."COID" = 'TEST' ) ANDAND
( "CERTLOG"."BURID" = 'PSSB' ) AND
( "CERTLOG"."CERTID" = 'TEST' ) AND
( "CERTLOG"."DATECERTEND" = SYSDATE ) AND
( "CERTLOG"."INVDETAILKEY" = "INVDETAIL"."INVDETAILKEY" )