Can stored procedure use created Index over a table in oracle -


i have stored procedure takes 3.5 second execute. sp in below:

create or replace procedure proctest (columnnumber   in     varchar2,                                       tg                out varchar2)    stmt   varchar2 (1000); begin    tg := 't' || to_char (sysdate, 'yyyymmddhh24miss') || columnnumber;    stmt :=       'create global temporary table ' || tg       || ' on commit preserve rows (select * user1.tbl chargingparty='       || columnnumber       || ')';     execute immediate stmt; end; 

i execute part (create global temporary table ' || tg || ' on commit preserve rows (select * user1.tbl chargingparty=' || columnnumber || ')' ) in sql developer, , takes 0.2s, when execute sp, takes 3.2.

i created index on table(user1.tbl), when run create table query in sql developer before creating index, took 3.2s.

my question is: sp uses indexes? or how can force sp use index???

in general indexes used oracle optimizer regardless query executed (stored procedure vs query sql developer).

based on whether have enabled statistics gathering (by default enabled believe), optimizer decides use index or not depending on statistics metrics table in query (there cases querying directly table faster rather using index. when number of records low).

without being sure query executed first, there possibility have faced case query result stored in buffer cache (from first execution using stored procedure) , when re-executing query sql developer, performance better because of there no need access disk.

in case want direct query use index use hint


Comments

Popular posts from this blog

amazon web services - S3 Pre-signed POST validate file type? -

c# - Check Keyboard Input Winforms -