It's a hard thing to benchmark on the central server, due to the caching that MySQL does internally. The first run I did took around 20 seconds, the second one closer to 12 seconds. If this is superuser-only, and there's caching on the request, then we should be fine for a while, otherwise it's simply too inefficient a lookup (however it's done), and we should be keeping a separate "zone uploads" model that we fill in from the existing data to start out, and then update whenever there's a sync session on the central server. This would probably be a good direction to move in, as we start putting together more and more complex aggregate data visualizations on the central server: have unsynced tables with aggregate statistics that are either updated on intervals, by a background process, or kept up to date by incrementing when a value they depend on is updated (e.g., in this case, during sync sessions).