Einzelnen Beitrag anzeigen

jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#11

AW: mySQL Funktion Performance

  Alt 27. Jul 2015, 14:38
SQL-Code:
Select ..., ..., (select sum(wert) from TableB where TableA_ID = a.ID Group by TableA_ID) as wertgesamt from TableA as a
ist identisch mit
Select ..., ..., datenbankname.Funktion(ID) as wertgesamt from TableA
"Group by TableA_ID" ist meist falsch bzw. unter MySQL nur überflüssig (weil es erlaubt ist) und verleitet das System ggf dazu, die TableB 100e Mal abzufragen, entsprechend der Anzahl der Mastersätze.
In der Funktion, ist es vielleicht auch so formuliert, hier zwingt der Funktionsaufruf das System zu einem ähnlichen Verhalten.
Formulier die Abfrage um.
Code:
Select a.*, sum(b.wert) from tableA a, tableB
 where b.tableA_ID=a.id
 Group by a.*
wobei alle a.* durch einzelne Feldnamen zu ersetzen sind (im select und im groub by).
Alternativ natürlich das Statement auch in ANSI Syntax (..from a join b on ..).
So kommst Du vermutlich mit jeweils einem Scan je Table davon und bist per se schneller.
Gruß, Jo
  Mit Zitat antworten Zitat