Oder eine Idee, wie das gehen könnte?
Ich fange eine Ebene höher an als Robert.
Welche Treffermengen hast Du zu erwarten, und welche Suchdauer?
Bei kleiner Treffermenge ist die "triviale" Architektur ausreichend:
1. dem CGI-Skript einen Offset als Parameter mitgeben (anfangs 0, im generierten Link auf die nächsten 10 Treffer jeweils 10 mehr usw.)
2. alle Treffer berechnen
3. nur diejenigen ausgeben, die erwünscht sind.
(Das Archiv-Suchskript dieses Forums funktioniert genauso, denn um die *letzten* 100 Treffer auszugeben, muß ich nun mal alle berechnen.)
Spannender wird die Sache, wenn Du 20 Millionen Datensätze hast und/oder Tausende von Treffern. Dann könnte man nämlich einen daemon schreiben, der die Query einmal durchführt und ihr Ergebnis speichert (LRU-Algorithmus etc., um "alte" Anfragen herauszuswappen).
Das CGI-Skript würde dann nur eine Kommunikationsverbindung (socket?) zu diesem daemon aufbauen, statt die Query selbst zu erledigen.
Auf diese Weise würde man die Datenbankabfrage nur ein einziges Mal durchführen und möglicherweise einiges an Performance gewinnen ... die Idee lohnt sich natürlich vor allem dann, wenn es der Normalfall ist, daß auch wirklich geblättert wird, also die Trefferrate für wiederholten Zugriff auf dieselbe Query gut wird. (Und wenn der daemon genügend Hauptspeicher zur Verfügung hat.)