Hi!
Mit deiner Anweisung
SELECT d.* FROM datentabelle d, zugrifftabelle z WHERE d.mandant = z.mandant
liest du alle Datensätze aus der Datentabelle, das dauert bei Millionen von Datensätzen natürlich einige Zeit. Die Angabe der Zugrifftabelle im FROM-Teil - und damit auch das WHERE-Token bewirken gar nichts mehr, da ja aus z keine Felder selektiert werden und die WHERE-Klausel die Datensätze von D nicht einschränkt.
Vermutlich willst du ja nur die Daten zu "current_user" anzeigen. Wenn dies ein Feld der Zugriffstabelle ist, solltest du die
SQL-Anweisung so ändern:
Delphi-Quellcode:
query.SQL := '
SELECT d.* FROM datentabelle d '
+'
LEFT JOIN zugriffstabelle z on d.mandant=z.mandant '
+'
WHERE z.current_user=''
'+aktuser+'
''
';