Oracle: What should be better, alter table CACHE or INDEXES?
indexes and caching serve different purposes:


indexes allow you to read only a (hopefully small) part of the table. 
Caching reduces the time it takes to read a block as you only need logical (in buffer) reads instead of disk reads. 


The two mix very well together as Oracle would happily use a cached index if it fits the query and statistics. 

For example reading 10 rows via index will be faster then scanning 40gb table in memory, and if the index is cached then even more so.