Interbase SQL 需要很长时间才能执行

Interbase SQL taking long time to execute

我想弄清楚为什么 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的速度来摆脱延迟。

我解决了这个问题。我将 INNER 连接更改为 LEFT 连接,它现在使用以下计划即时运行,该计划现在使用 AH 索引:

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

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