Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Performance 优化SQLite max()查询_Performance_Sqlite_Aggregates - Fatal编程技术网

Performance 优化SQLite max()查询

Performance 优化SQLite max()查询,performance,sqlite,aggregates,Performance,Sqlite,Aggregates,我有一个表,有大约一亿条记录,有大约15个不同的列。数据包括速度记录、时间戳、被跟踪车辆上的id和速度记录。一辆车可以记录数十万次的速度,大约有40000辆不同的车 我想找到每辆车的最高速度记录 只是询问: SELECT userid, max(speed) from SpeedReadings group by userid 需要很多时间,所以我想优化它。我的第一个想法是用userid和速度创建索引。查询中变量的顺序和索引表是否重要 这两个查询之间是否存在速度差异: SELECT useri

我有一个表,有大约一亿条记录,有大约15个不同的列。数据包括速度记录、时间戳、被跟踪车辆上的id和速度记录。一辆车可以记录数十万次的速度,大约有40000辆不同的车

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

只是询问:

SELECT userid, max(speed) from SpeedReadings group by userid
需要很多时间,所以我想优化它。我的第一个想法是用userid和速度创建索引。查询中变量的顺序和索引表是否重要

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

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

SELECT distinct userid, max(speed) from SpeedReadings

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

要进一步加快计算速度,请将
speed
列附加到索引中,以获得一个值

查询中列的顺序并不重要


查询时存在速度差异
从SpeedReads中选择distinct userid,max(speed)
,但我想您希望得到正确的结果,因此差异并不重要。

谢谢您的回答。我希望group by呈现正确的结果,而不是select distinct。顺便说一句,当你提到覆盖索引时,你指的是一个同时具有用户ID和速度的多列索引,对吗?是的,这就是我在那句话的第一部分中写的。