Det er ikke bare "en flok tuning (indekser osv.)". Dette er afgørende og et must.
Du har skrevet nogle få detaljer, men lad os prøve.
Reglen er:Prøv at finde det mest almindelige arbejdssæt. Se om det passer i RAM. Optimer hardware, PG/OS-bufferindstillinger og PG-indekser/klynger til det. Ellers skal du kigge efter aggregater, eller hvis det ikke er acceptabelt, og du har brug for fuldstændig tilfældig adgang, så tænk på, hvilken hardware der kunne scanne hele tabellen for dig inden for rimelig tid.
Hvor stort er dit bord (i gigabyte)? Hvordan er det sammenlignet med samlet RAM? Hvad er dine PG-indstillinger, inklusive shared_buffers og effective_cache_size? Er dette en dedikeret server? Hvis du har et bord på 250 gig og omkring 10 GB RAM, betyder det, at du kun kan få plads til 4 % af bordet.
Er der nogle kolonner, der almindeligvis bruges til filtrering, såsom tilstand eller dato? Kan du identificere det arbejdssæt, der er mest almindeligt brugt (som kun sidste måned)? Hvis det er tilfældet, så overvej at partitionere eller klynge disse kolonner og bestemt indeksere dem. Dybest set forsøger du at sikre dig, at så meget af arbejdssættet som muligt passer i RAM.
Undgå for enhver pris at scanne bordet, hvis det ikke passer i RAM. Hvis du virkelig har brug for absolut tilfældig adgang, er den eneste måde, det kan bruges på, virkelig sofistikeret hardware. Du har brug for en vedvarende lager-/RAM-konfiguration, som kan læse 250 GB inden for rimelig tid.