I have a Java application that includes an OpenLayers map with WMS tiles pulled from Geoserver. Geoserver and the Java app are looking at the same MySQL database. In the Java application I have a complex filtering system to select data and I would like only the selected data to be shown on the map.
I have tried to do this by passing a CQL filter of the form "
ID in (123,3000,6001,5464, etc...)" unfortunately Geoserver 2.3 takes around 12 seconds to render each tile as the list of ID's is so long and I can expect this to get worse as more data is added.
I cannot pass through the SQL query that my Java app is using as it is a complex join that pulls in data from tables not available to geoserver. Also there are security issues as I do not want to expose anything more than the geometry and the feature ID to the public internet via geoserver. Is there a better way of passing the ID's across that is faster?