When your SQL retrieves data using the condition "col1 is not null", Oracle would not be able to use the index on the "col1" column to retrieve data for you. The transformation that changes the condition to "col1 >= -1E38" is mainly trying to make it possible for Oracle to consider using the index on the "col1" column. The value "-1E38" is the smallest number that you can store in the "col1" column, so searching all data >= -1E38 means searching any non-null values.