1. A system comprising: at least one processor; a first module executable on the at least one processor to: receive a set of queries; scan predicates in the queries to identify terms in the predicates satisfying predefined properties; provide potential indexes based on the terms satisfying the predefined properties; and eliminate one or more of the potential indexes based on one or more predetermined criteria to produce a set of candidate indexes that excludes the eliminated one or more potential indexes; and an optimizer executable on the at least one processor to generate a recommended index from the set of candidate indexes.