Inwieweit Inidizes, seitens der Datenbanktabellen?
Ja, bedeutet Deine Nachfrage, dass Dir die Bedeutung von Indizierung nicht geläufig ist?
Ich kann anhand Deiner Angaben nicht feststellen, ob Du minimal die Foreign Key Spalten indizierst.
Ich weiß auch nicht, ob es Sinn macht große / größere Datenmengen komplett auf den Client zu laden.
Was ist, wenn die nächste
Query dazu kommt?
Ich würde bei klassischen Queries bleiben, statt Clientdataset und den Engpaß suchen. Fehlende Indizierung wäre mein Favorit.
Die Outer Joins halte ich für gerechtfertigt, sofern es Mengen gibt, die nicht gefüllt sein müssen.
Falls Du bei der Verdahtung der Submengen Fehler im Delphicode gemacht hast, die darauf hinauslaufen, dass eine Submenge geöffnet wird, ohne dass die gewünschte Einschränkung durch den Master feststeht, könnte das ähnliche Effekte haben. Der Effekt würde beim Debuggen sicher deutlich.