1. A method comprising: accessing a query comprising a plurality of predicates that includes two or more predicates in disjunction; selecting, based on a number of predicates in said two or more predicates in disjunction, from a plurality of alternative stored procedures, a certain procedure to expand the query into one or more semantically equivalent candidate queries; wherein the plurality of alternative stored procedures each generate a different set of semantically equivalent candidate queries from an expansion state space of the query that includes all possible semantically equivalent queries comprising two or more conjunctive subqueries combined by one or more UNION ALL operators, each conjunctive subquery of the two or more conjunctive subqueries including one or more predicates of the plurality of predicates, in conjunction, said two or more conjunctive subqueries include a first conjunctive query that includes a particular predicate of said two or more predicates and a second conjunctive subquery that includes another of said two or more predicate but not said particular predicate; based on the certain procedure selected, generating one or more semantically equivalent candidate queries; performing a cost evaluation of the query and each of the one or more semantically equivalent candidate queries; based at least in part on the cost evaluation, selecting a particular query of the one or more semantically equivalent candidate queries or the query; causing execution of a transformed query that is based at least in part on the particular query; wherein the method is performed by one or more processors of one or more computing devices.