I use my private instance to fetch the data for map rendering, so I'm only interested in features that can be rendered on a given map scale (highways, places, roads, water bodies etc.). I do need to cover large(r) areas, however, and with my instance,I'm currently only able to cover smaller countries (like Austria or Netherlands), but on Germany Overpass fails with a cryptic error message (I wrote about that a few days ago).
Here's a sample query for Austria (and my notes are below):
Initially, I didn't use 'regv' expressions to match several values for the same tag because I thought they would be slower than using separate 'v' queries - and I was wrong. Combining the queries using 'regv' saved me around 25% of query execution time.
It would be even better if Overpass allowed a more complex 'or' expressions to be specified inside a single <query> element. Then I could combine several query elements (since they all use the same bbox) into one, like 'railway=rail OR
highway=^(motorway|motorway_link|trunk|trunk_link|primary|secondary)$' and presumably speed up the query even more.
Would it be possible to parallelize things, so certain <query> elements could run on separate cores?