1. A method to support evolutionary queries, comprising: retaining artifacts from previous query or workflow execution runs materialized views; providing a gray-box model of a user defined function (UDF) to support search for rewrites of the UDF; automatically producing a rewrite that uses artifacts to reduce workflow execution time; incrementally searching the space of rewrites to create explode and searching a minimum amount of a solution space to find an optimal rewrite; supporting simultaneous evolution along three dimensions including workflow, user and data evolution; and determining the optimal rewrite r* of W by: performing an efficient search of rewrites for all targets in W and outputs a globally optimal rewrite for W n ; and enumerating one or more candidate views for a single target based on their potential to produce a low-cost rewrite of the target.