我想知道对包含1000行的表cycling.cyclist_points执行以下两个查询时的性能差异。 :
SELECT sum(race_points)
FROM cycling.cyclist_points
WHERE id = e3b19ec4-774a-4d1c-9e5a-decec1e30aac;
select *
from cycling.cyclist_points
WHERE id = e3b19ec4-774a-4d1c-9e5a-decec1e30aac;
如果sum(race_points)导致查询费用昂贵,我将不得不寻找其他解决方案。
答案 0 :(得分:0)
您的查询之间的效果差异:
尝试预处理总和,而不是计算总和运行时间。
如果race_points
是int或bigint,那么使用如下的计数器表:
CREATE TABLE race_points_counter (
id uuid PRIMARY KEY,
sum counter
);
每当插入cyclist_points
的新数据也会增加当前点的总和。
UPDATE race_points_counter SET sum = sum + ? WHERE id = ?
现在您只需选择该ID的总和
即可SELECT sum FROM race_points_counter WHERE id = ?