Hi All, I have a batch PL/SQL which needs to be optimized and there is a specific query which is taking considerable time because of a full table scan where I was expecting it to use the indexes. Here's the SQL to simulate the problem: Code (SQL): CREATE TABLE T1 ( lower_lim VARCHAR2(20), upper_lim VARCHAR2(20), t1_val1 NUMBER(2), t1_val2 VARCHAR2(10) ); CREATE INDEX T1_I1 ON T1(LOWER_LIM); CREATE INDEX T1_I2 ON T1(UPPER_LIM); INSERT INTO T1 VALUES ('54601000', '54602000', 30, 'SPLIT'); INSERT INTO T1 VALUES ('54601000', '54601500', 30, 'NEW'); INSERT INTO T1 VALUES ('54601501', '54602000', 30, 'NEW'); INSERT INTO T1 VALUES ('54603000', '54609000', 30, 'NEW'); COMMIT; SELECT * FROM T1 WHERE '54601300' BETWEEN LOWER_LIM AND UPPER_LIM; When I do an "Explain Plan" of the SELECT statement, I get a "TABLE ACCESS - FULL" (i.e., full table scan). Why are the indexes T1_I1 and T1_I2 not used and how can I correct the situation ? Note: I'm using around 1000 rows to test (DEV instance) and on PROD, we're expecting around 500K-700K rows. Thanks & Regards, Rajen.