Indexes can be used to improve the performance of search queries. For each record in the table the database creates an item in some sort of sorted 'quick reference table'. Each attribute has it's own 'quick reference table'. If you search or sort on an indexed attribute the database will look it up in that 'quick reference table', the database already knows in wich part of the table it has to look (begin, middle, end).
This is faster because if you don't have an index on that attribute, the database has to look through all records every time you search or sort on that attribute.
As a general guide line you have to create indexes on every attribute you always use to find objects in your microflow, suchs as an ordernumber etc..., or on attributes you know that the users are going to search on them a lot.
However the more indexes you create the slower the commit action will become because every time you change an object all quick 'reference tables' have to be updated. So try to find a balance between an index on all attributes and no indexes at all. 5 or 6 indexes on an object can't give a performance problem, but 20 or 30 indexes will slow the process down.