There are limitations to the db4o indexing. Not all types can be indexed.
Basically all primitive types like int, long, double etc can be indexed. Indexes on primitive types work extremely well.
Additionally you can index strings, which are handled by db4o like primitives. Strings can be arbitrary long, so a index on string is usually slower than a index on a primitive value. But it's still fast for straight lookups. Note also that a string index can only be used for equality comparison. Comparisons like contains, start with etc don't use the index.
The Date DateTime, DateTimeOffset and Guid can also be indexed without any issues.
You also can index any object reference except arrays and strings, which are handled like primitives. This means you can index a field which holds a reference to a object and then look up for objects which have a certain reference.
You can also index BigDecimal and BigNumber objects. Those indexes act like indexes on regular primitive types like int or long. Note that you need to add BigMath-support.
Arrays and collections cannot be indexed. The current db4o index implementation cannot deal with those types. This also means that you cannot do fast look-ups on arrays or collections.
Currently the index on strings cannot be used for advanced comparisons like contains, starts with etc.