SELECT sum(coloumn_name)FROM和CQL中的SELECT coloumn_name之间的性能差异

时间:2017-05-24 11:09:48

标签: cassandra cql

我想知道对包含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)导致查询费用昂贵,我将不得不寻找其他解决方案。

1 个答案:

答案 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 = ?