0

我有一张包含几亿条记录的表,大约有 15 个不同的列。这些数据包括速度记录、时间戳、被跟踪车辆的 ID 和速度记录。一辆汽车可以有数十万条速度记录,大约有 40 000 种不同的车辆。

我想找到每辆车的最大速度记录。

只是查询:

SELECT userid, max(speed) from SpeedReadings group by userid

需要很多时间,所以我想优化它。我的第一个想法是使用用户 ID 和速度创建索引。查询中变量的顺序和索引表是否重要?

这两个查询之间是否存在速度差异:

SELECT userid, max(speed) from SpeedReadings group by userid

SELECT distinct userid, max(speed) from SpeedReadings
4

1 回答 1

1

优化分组的最佳方法是将数据存储在按用户 ID 排序的列表中,这样数据库就不需要保留所有可能的结果。换句话说,您需要一个索引,userid第一列在哪里。

为了进一步加快计算速度,将speed列附加到索引以获得覆盖索引

查询中列的顺序无关紧要。

查询有速度差异SELECT distinct userid, max(speed) from SpeedReadings,但我猜你想得到正确的结果,所以差异无关紧要。

于 2017-03-23T12:11:05.770 回答