REGEXP_INSTR is an Oracle function. It cannot use an index, so it does a full table scan.
I agree with Otheus, what are you trying to match in your data, leading A{0,1} seems pointless?
Functions do not use the index. If you have 1,000,000 rows, then the query reads all million rows - a full table scan.
Instead of playing with your regex, fix your SQL first.
Add this line to the top of your code:
ALTER SESSION SET SQL_TRACE TRUE;
Next, get into SQLPLUS
select value from V$PARAMETER where name='user_dump_dest';VALUE
--------------------------------------------------------------------------------
/psw/app/oracle/admin/DEV1/udump
The value in red is the location of your dump directory. Remember it.
Next run your code.
Now, create a tkprof report:
cd [your dump directory]
ls -rt | tail -1 # produces a file name that ends in .trc This is the output you want
tkprof [file.trc] myhomedir/rpt.rpt
Now read the rpt.rpt file - it's output is similar to the output from explain plan, but it has actual time for disk i/o and cpu, etc.