Use of NVL not considering Indexes
Whenever you use functions on columns that are associated to indexes, the engine MIGHT NOT use the indexes, due to the computation it needs on top of the column values. If you create a function -based index (like you made), it's being created with the already computed values from the function. The caveat with this, is that this index is now usable only when the column is also being used with the function.