1. An apparatus comprising: at least one processor; a memory coupled to the at least one processor; a plurality of network interfaces coupled to a plurality of networks that are coupled to a plurality of nodes, each of the plurality of networks comprising a communication path between at least two of the plurality of nodes, each node comprising at least one processor and memory, a first of the plurality of nodes including first data in a distributed database and a second of the plurality of nodes including second data in the distributed database; a network monitor that monitors characteristics of the plurality of networks and generates a log of the characteristics of the plurality of networks; first and second of the plurality of networks that provide alternative network connections to the first node; and a query optimizer residing in the memory and executed by the at least one processor, the query optimizer logging historical information for queries that indicates past network selection when executing each of the queries, the query optimizer taking network choice into consideration when executing a database query to the distributed database that retrieves the first data and the second data in the distributed database by considering the characteristics of the plurality of networks between the apparatus and the first and second nodes logged by the network monitor and by considering the past network selection in selecting at least one of the plurality of networks for executing the query, wherein the query optimizer selects one of the first and second networks for executing the query based on the historical information that includes which of the first and second networks were used during at least one previous execution of the query and based on information in the log of the characteristics of the plurality of networks that indicates characteristics of the first and second networks.