When i send a select query over the public internet it takes 2616(ms) to return a resultset of 42 kilobytes.
Keep in mind that the request needs to reach the server, be processed there and the reply needs to return to the client. Each transmission consists of serialization plus propagation to the destination, so the time does depend on the data size.
In your case, the largest impact is most likely from the processing on the server, however. Complex queries can require quite a bit of time, depending on their complexity (not necessarily related to the output size) and server performance.
For completeness:
- serialization delay = data size / bandwidth (42 KB / 100 Mbit/s ≈ 3.5 ms)
- propagation delay: at least 5 ms per 1000 km, depending on connectivity and media (Groningen-Virginia >30 ms per trip)
So, you could roughly estimate for the round trip to take less than 100 ms while the rest of the delay is due to server processing. This is why it is vital for your server and database to be optimized for your workload. Also, you need to take the transmission delay into account, so the application should optimize and bundle queries as far as possible.