http://en.wikipedia.org/wiki/Materialized_view
Kurz gesagt, wenn man in einem bestimmten Zoomlevel nur Autobahnen, Hauptstädte und Flüsse rendern will, legt man so einen Materialized View an. Im Gegensatz zur einem normalen View, werden da dann auch Hauptstädte, Flüsse und Autobahnen extra nochmal gespeichert. Hat den Vorteil, dass bei großen Gebieten nicht alle Daten durchsucht werden müssen. Okay, bei sehr geringen Vergrößerungen arbeite ich eh mit dem Tilecache (und tilecache_seed) aber speziell Zoom Levels 10-12 sind aufgrund der Menge an Daten teils etwas langsam und alle Tiles vorab zu berechenen und Cachen ist etwas zuviel des gutem.

Mein Setup ist Postgres 9.0, PostGIS 1.5.4, gefüllt mit osm2pgsql (etwas andere Config als Standard), Maperserver 5.6.5 und Tilecache, Debian (headless)

SSD geht leider nicht, wäre bei einem Desktop PC sicher eine gute Möglichkeit. Oft sehe ich im Prozessmonitor 100% Auslastung, es müsste also auch ohne SSD was zu optimieren sein.
Die select Statements habe ich auch schon im Blick. Da werden teilweise Daten abgegriffen, die nicht benutzt werden. Das mit den partiellen gist-Indizes werde ich mir mal anschauen. Danke für den Tipp