我有一個查詢使用聚合函數將maximum absolute
的值分配給表中的另一列。問題是需要很長時間(約10-15秒)來查詢完成時間。這是查詢的樣子:聚合到'普通'查詢
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);
其中id
不是唯一的,因此是分組。 tp
是一個數字整數字段。下面是表的樣子:
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
我希望輸出的樣子:
TABLE c
PID(primary) | tp (integer)
--------------------+-----------------------------+--------
1 | 1000
我試圖使它像這樣的工作:
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);
雖然提高了性能,但結果是不正確的..任何幫助將不勝感激?
可以TP是一個正的值Δα –
你有沒有適當的ID ID和TC ID? – scaisEdge
@MaheshMadushanka是..我有ID的 – faizanjehangir