Ich habe eine Abfrage, die Aggregatfunktionen verwendet, um die maximum absolute
der Werte einer anderen Spalte in der Tabelle zuzuweisen. Das Problem ist, dass es viel Zeit in Anspruch nimmt (ca. 10-15 Sekunden), um die Abschlusszeit abzufragen. Dies ist, was die Abfrage wie folgt aussieht:Aggregieren zu 'einfachen' Abfrage
UPDATE calculated_table c
SET tp = (SELECT MAX(ABS(s.tp))
FROM ts s INNER JOIN tc t ON s.id = t.id
GROUP BY s.id);
Wo id
nicht eindeutig ist, damit die Gruppierung. tp
ist ein numerisches ganzzahliges Feld. Hier ist, was die Tabellen wie folgt aussehen:
TABLE ts
PID(primary) | id (FKEY) | tp (integer)
--------------------+-----------------------------+------------------------------------------------------
1 | 2 | -100
2 | 2 | -500
3 | 2 | -1000
TABLE tc
PID(primary) | id (FKEY)
--------------------+-----------------------------+-------------------------
1 | 2
ich die Ausgabe aussehen soll:
TABLE c
PID(primary) | tp (integer)
--------------------+-----------------------------+--------
1 | 1000
Ich habe versucht, es so funktioniert:
UPDATE calculated_table c
SET tp = (SELECT s.tp
FROM ts s INNER JOIN tc t ON s.id = t.id
ORDER BY s.tp DESC
LIMIT 1);
Obwohl es die verbesserte Leistung, aber die Ergebnisse sind falsch .. jede Hilfe wäre willkommen?
kann tp einen positiven Wert sein ?? –
haben Sie richtige inde IDs und tc ID? – scaisEdge
@MaheshMadushanka ja .. und ich habe keine Indizes auf – faizanjehangir