In Virtual DataPort, when a query is executed, the Execution Plan is selected based on the Query Processing capabilities of the underlying data sources. For example, if the underlying sources involved in the query are traditional RDBMS, then Virtual DataPort will delegate the query processing to the underlying source, as much as possible per the view definition.
If the underlying source involves a non-traditional source like API, File system, etc, then the query processing happens in the Virtual layer, which will result in multiple selection plans.
In such scenarios, I would review the execution trace, view definition, data sources involved in the query and apply possible changes that could improve the execution by referring to the below sections,
* Enable the [Automatic Simplification of Queries](https://community.denodo.com/docs/html/browse/8.0/en/vdp/administration/optimizing_queries/automatic_simplification_of_queries/automatic_simplification_of_queries#automatic-simplification-of-queries) option to help the Execution Engine to simplify the queries before executing them.
* Use [Full Cache](https://community.denodo.com/docs/html/browse/8.0/en/vdp/administration/cache_module/cache_modes/full_mode#full-mode) mode to store the data in any RDBMS, so that the query is delegated.
For more details, take a look at [Queries Optimization](https://community.denodo.com/docs/html/browse/8.0/en/vdp/administration/server_configuration/queries_optimization/queries_optimization#queries-optimization) section of Virtual DataPort Administration Guide.
Hope this helps!