2015-01-26 189 views
0

我想弄清楚为什么SQL语句执行需要这么长时间。这是针对两张桌子,两者都有相当大的规模,但不够大,不能拖​​延。它是:Interbase SQL花费很长时间执行

Select pm.Type 
From History ah 
    inner join Masters pm on pm.MasterUID=ah.MasterUID 
where ah.ControlUID= '1891' rows 1 

所示的计划是:

PLAN JOIN (PM NATURAL,AH INDEX (IDXPROPMASTER,IDXHISTBATCHCONTROL)) 

所有这些领域均是其各自表中的索引。当我掰开SQL分为两个步骤,它运行快速,它使用PM指标计划:

Select ah.masteruid from history ah where ah.controluid = '1891' 

PLAN (AH INDEX (IDXHISTBATCHCONTROL)) 

Select pm.taxtype from masters pm where pm.masteruid = '1760' 

PLAN (PM INDEX (RDB$PRIMARY405)) 
Adapted Plan 
PLAN (PM INDEX (PK_MASTERS)) 

我的问题是如何提高第一SQL的速度摆脱延迟。

+0

究竟是几点? – 2015-01-26 20:20:55

+0

执行时间至少需要20秒才能返回一条记录。如果执行两条SQL语句方法,即使执行两条语句也是即时的。 – 2015-01-26 20:36:33

+0

您是否测试过没有“行1”声明? – 2015-01-26 21:03:45

回答

1

我解决了这个问题。我改变了INNER加入到左加入,它现在运行瞬间与以下计划,现在确实使用AH索引:

PLAN JOIN (AH INDEX (IDXHISTBATCHCONTROL),PM INDEX (RDB$PRIMARY405)) 

Adapted Plan 
PLAN JOIN (AH INDEX (IDXHISTBATCHCONTROL),PM INDEX (PK_MASTERS))