5. A program storage device readable by a machine, tangibly embodying a program of instructions executable by the machine to perform method steps for optimizing performance of a heterogeneous, distributed database system comprising a plurality of heterogeneous database instances, wherein data associated with a client is distributed among said heterogeneous database instances, the method steps comprising: (1) receiving a query from a host computer, wherein said query has one or more subqueries contained therein; (2) evaluating said query bottom-up to determine whether each of said one or more subqueries satisfies a data coverage criteria and a capability coverage criteria, wherein said data coverage criteria requires all data referenced in a particular subquery to be located within a single database instance and said capability coverage criteria requires that said single database instance perform all capabilities referenced in said particular subquery; (3) marking said one or more subqueries as push down-able if said data coverage and said capability coverage are satisfied; and (4) evaluating said query top-down to determine which subqueries have been marked by step (3) in order to determine whether said query ill its entirety or said one or more subqueries can be pushed down to said single database instance, whereby said top down evaluation of said query locates the largest subqueries to be pushed down to said single database instance.
7. The program storage device of claim 5, further including instructions for performing the method step of decomposing said one or more subqueries that cannot be pushed down into manageable execution commands that can be executed by said plurality of heterogeneous database instances.