1. A method for query processing comprising: creating, via a processor, an index of a database; ordering, via the processor, a set of index candidates from the index into a list based on heuristic rules, wherein the heuristic rules reduce a matching cost for an index pattern via a preference for a matching without a descendant axis over a matching with a descendant axis and via a preference for a matching without a wildcard over a matching with a wildcard and via a preference for a pattern with greater number of steps than for a pattern with fewer number of steps, wherein determination of the matching with or without a descendant axis is performed prior to determination of the matching with or without a wildcard, and wherein the determination of the matching with or without a wildcard is performed prior to determination of whether a current pattern contains fewer steps than a previous pattern; and reducing, via the processor, a query defining a query path into a list of single path expressions.