SQL_CALC_FOUND_ROWS und FOUND_ROWS() könnten das Problem lösen (wenn's mysql ist).
Also eine Abfrage (ohne Limit) reicht. Denn die liefert neben denselben selbst auch die Anzahl der Datensätze. Danach in der Schleife halt die Ausgabe auf 3 (oder was auch immer konfiguriert ist) begrenzen.
# $limit = 3
$counter = 0;
$retHash['AnzahlTermine'] = $stmt -> num_rows;
while ( $stmt -> fetch() && counter < $limit ) {
$counter ++;
retHash['Kalender_Termine'][] = array(
#...
)
}
return $retHash
Die Menge der Daten, die "notlos" abgefragt, sortiert und ausgeliefert werden wird sich bei einem Kalender voraussichtlich in engen Grenzen (oft unter dem Vorschau-Limit) halten, so dass die Gesamtperformance darunter vorhersehbar weniger leidet als unter einer zweiten Abfrage.