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

带索引的QLDB SELECT查询是否会被优化,是否会执行全表扫描?

结论

绝大多数场景下不会执行全表扫描,会优先走UID字段的二级索引,仅检索UID匹配指定值的行后再做剩余条件过滤。

原因说明

  • 关系型数据库的查询优化器会优先选择过滤性最好的索引来缩小扫描范围:你的查询条件里UID是等值匹配,过滤性远高于TimeValue的范围查询和Cause的枚举筛选,优化器几乎一定会选择UID索引作为执行计划的驱动索引。
  • 走UID索引定位到所有匹配的行之后,数据库会直接在这批行中校验TimeValue > 1620414948000和Cause的枚举条件,符合要求的行就会返回。
  • 仅存在极端特殊情况才会走全表扫描:当UID字段区分度极低,比如表中90%以上的行UID都是你查询的这个值时,优化器才有可能放弃走索引选择全表扫描,但这种情况和UID作为用户标识的业务设定完全不符,基本不会出现。

可选优化方案

如果要进一步提升查询性能,可以创建(UID, Cause, TimeValue, Cause_Amount)的联合覆盖索引,包含你查询需要返回的所有字段和过滤用字段,这样直接走索引就能拿到所有需要的数据,不需要回表查询主键索引,性能会提升数倍。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 22:24:00