I had some fun recently with a Oracle database choosing a poor execution plan.
The problem was with a view which had a column which was explicitly cast to a value.
create table vw_temp
cast(ID) as NUMBER(19,0) as ID,
from very_large_table a
join large_table b on a.ID = b.ID
where Name = ‘whatever’ ;
Oracle in this case was unable to use the ability to push predicates down and make the joins more optimized.
So the moral of the story is be careful if you are doing casts/converts or any function which will change the column in a view.
For more info about predicate push down have a read of this blog entry
Or this short entry in the documenation