You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

QuestDB使用LATEST BY查询时耗时随表行数线性增长问题咨询

性能不符合预期的核心原因
  • SYMBOL列未配置索引
    你在定义ObjectType字段时仅设置了容量和缓存参数,未添加index标识开启索引。QuestDB的LATEST BY低延迟查询路径完全依赖目标列的索引结构,无索引时数据库必须扫描全表所有行来匹配where条件、筛选最新值,耗时自然会随表内行数/分区数线性增长。
  • 查询写法未适配场景特性
    你的查询先通过where限定了objectType = 'queue',过滤后ObjectType仅存在唯一固定值,此时使用LATEST BY属于不必要的逻辑开销,无法触发最优执行计划。
优化方案
  1. 给ObjectType字段新增索引
    如果是新建表,修改建表语句给对应字段加索引即可:
CREATE TABLE metric(
   ObjectType SYMBOL capacity 2 cache index, 
   ObjectId SYMBOL capacity 20000 cache, 
   Group SYMBOL capacity 4000 cache, 
   Region SYMBOL capacity 20 cache, 
   CC Symbol capacity 50 cache,
   value DOUBLE,
   timestamp TIMESTAMP
) 
timestamp(timestamp)
PARTITION BY DAY;

如果表已经存在,执行语句添加索引:

ALTER TABLE metric ALTER COLUMN ObjectType ADD INDEX;
  1. 调整单值过滤场景的查询写法
    针对你当前固定值过滤取最新的需求,直接按时间戳倒序取第一条即可,性能比LATEST BY更优:
select value from metric 
where objectType= 'queue'
ORDER BY timestamp DESC LIMIT 1;

内容的提问来源于stack exchange,提问作者Doncarleone512

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 11:45:02