【问题标题】:Performance difference between SELECT sum(coloumn_name) FROM and SELECT coloumn_name in CQLCQL 中 SELECT sum(coloumn_name) FROM 和 SELECT coloumn_name 之间的性能差异
【发布时间】:2017-05-25 03:57:20
【问题描述】:

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

【问题讨论】:

    标签: cassandra cql


    【解决方案1】:

    您的查询之间的性能差异:

    • 您的两个查询都需要扫描相同的行数。(该分区中的行数)
    • 第一次查询只选择一列,所以速度有点快。

    尝试对总和进行预处理,而不是计算总和运行时间。

    如果 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 = ?
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-12-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-12
      • 1970-01-01
      • 2014-02-14
      • 1970-01-01
      相关资源
      最近更新 更多