SELECT ... WHERE column LIKE parameter||'%'

  • Follow


I have a database containing alot of procedures with this kind of coding logic:


BigTable
  column1 varchar2(40);


Procedure SomeProcedure (in_parameter varchar2)
 SELECT column1
 FROM BigTable
 WHERE column1 LIKE in_parameter||'%';
END;


The procedure is called like this:

SomeProcedure('abc');


Although this coding logic selects the correct rows, there is a big problem - it does not use the index on BigTable. 
But if you do perform at little test and change the procedure like this:


Procedure SomeProcedure (in_parameter varchar2)
 SELECT column1
 FROM BigTable
 WHERE column1 LIKE 'abc'||'%';
END;

Then it uses the index. But ofcourse now there is not the desired flexibility of using a parameter.


QUESTIONS:
  1. Why does Oracle not use the index when a parameter is used in the LIKE-statement?

0
Reply HNO (6) 8/11/2006 9:46:56 AM


0 Replies
328 Views

(page loaded in 0.037 seconds)

Similiar Articles:













7/29/2012 6:55:04 PM


Reply: