If I create an index with all columns in a table, performance is... hideous! but at least less hd usage.

if I create an index for each field, everything is a breeze! but of course 50%-80% increase in disk usage in my case.

So what's the rule for creating indexes? Do I join columsn that are almost always used in queries together? or does it have to do with the datatype? all numerics in one index and other types in another index?