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

Firebird 3.0 SQL查询优化咨询:特定条件查询性能优化

Firebird 3.0 特定条件记录筛选查询及性能分析

这条查询的作用是筛选符合特定条件的记录,检测哪些DEVICEID的LAST_TICK值,大于指定DEVICEID={INTEGER VALUE}对应其他DEVICEID的已知LAST_TICK值。

原始SQL查询

select a.TABELA, a.DEVICEID, 
(select LAST_TICK from KNOWLEDGE b where b.DEVICEID={INTEGER VALUE} and b.CROSSID=a.DEVICEID and b.TABELA=a.TABELA) as MEU_TICK, 
max(LAST_TICK) as MAX_TICK 
from KNOWLEDGE a 
where a.DEVICEID=a.CROSSID 
group by a.TABELA, a.DEVICEID 
having max(LAST_TICK) > (select LAST_TICK from KNOWLEDGE b where b.DEVICEID={INTEGER VALUE} and b.CROSSID=a.DEVICEID and b.TABELA=a.TABELA) 
order by a.TABELA

小数据集(11条记录)下的性能统计

执行计划

PLAN (B INDEX (PK_KNOWLEDGE))
PLAN (B INDEX (PK_KNOWLEDGE))
PLAN SORT (A NATURAL)

性能指标详情

------ 性能信息 ------
Prepare time = 0ms
Execute time = 0ms
Current memory = 36.473.632
Max memory = 36.729.200
Memory buffers = 2.048
Reads from disk to cache = 0
Writes from cache to disk = 0
Fetches from cache = 65

执行计划分步解析

  • 两个子查询的执行路径一致:Select Expression -> Singularity Check -> Filter -> Table "KNOWLEDGE" as "B" Access By ID -> Bitmap -> Index "PK_KNOWLEDGE" Unique Scan
  • 主查询的执行路径:Select Expression -> Filter -> Aggregate -> Sort (record length: 214, key length: 176) -> Filter -> Table "KNOWLEDGE" as "A" Full Scan

补充:KNOWLEDGE表DDL语句(部分)

CREATE TABLE KNOWLEDGE (
DEVICEID "INTEGER" NOT NULL /* ... */

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 03:57:03