Instring-Suche bei > 1 Million Datensätzen, Netz. Keine sehr schöne Ausgangssituation ohne Datenbankserver.
Im normalen XbpBrowse dürfte SET SMARTFILTER ON helfen, die Anzeige etwas zu beschleunigen, jedenfalls die
nach dem ersten Aufbau des Browses. Smartfilter bewirkt, dass sich das Workarea-Objekt die Datensätze merkt, für die die Filterbedingung zutrifft, den Filter also pro Datensatz nur einmalig evaluiert. Damit wäre schon ein bisschen was gewonnen. Der Smartfilter funktioniert übrigens auch fehlerlos. Man sollte nur nicht vergessen, ein DbRefresh() für die Workarea auszulösen, wenn sich Filter oder Datenbestand (mutmaßlich) geändert haben.
Aber ich fürchte, ohne Designänderung kommst Du da nicht voran. OrdWildSeek() ist in solchen Szenarien auch nicht viel schneller als ein "nackter" Filter. Es soll nach Schlagworten gesucht werden. Warum dann eine Instring-Suche? Sind die Schlagwörter innerhalb der Tabellenfelder konkatiniert? Wenn nein, könnte man Indexe für die (verschiedenen) Felder anlegen und direkt - über die normale Indexsuche - suchen. Da ein doppelter Scope (auf mehrere Felder zugleich) nicht möglich ist*, müsste man das Ergebnis der Suchoperation(en) in ein Array umschichten und in der Tabelle dann das Array browsen, wobei die Datalinks der Spalten wiederum auf die Tabelle verweisen müssten. Um dafür zu sorgen, dass sich die Tabelle mit dem Array synchronisiert, müsste der Datalink der ersten Spalte das notwendige DbGoto() enthalten. Vorsicht bei Tabellen mit SetLeftFrozen(). Da funktioniert dieses Modell manchmal nicht richtig.
* Doch, theoretisch schon, da die Expression für das Scope natürlich auch eine Funktion sein kann, aber es wäre dennoch ein bisschen kompliziert.