【发布时间】:2019-08-31 15:54:25
【问题描述】:
表中有数十亿行用于 4k 可变参数,我需要获取其中 500 个的最后值 我的表按天分区并按参数 ID 排序,所以我只需要找到具有所需 ID 的最后一条记录
SELECT max(time)
FROM obj_ntgres.param_values_history
PREWHERE param_id = 4171
工作缓慢: 经过:0.437 秒。处理了 256 万行,5.21 MB(587 万行/秒,11.92 MB/秒)
SELECT *
FROM obj_ntgres.param_values_history
PREWHERE param_id = 4171
ORDER BY time DESC
LIMIT 1
较慢: 1 行在一组。经过:3.413 秒。处理了 256 万行,5.45 MB(75.121 万行/秒,1.60 MB/秒)
表格
CREATE TABLE obj_ntgres.param_values_history (
time DateTime,
param_id UInt16,
param_value Float32,
param_value_quality Decimal(1, 0),
msec Decimal(3, 0)
) ENGINE = MergeTree PARTITION BY toStartOfDay(time)
ORDER BY
param_id SETTINGS index_granularity = 8192
也许你有一些想法如何让它更快?
我的意思是:在所有表上不使用 max() 查找最后一个元素
【问题讨论】:
标签: sql clickhouse