使用日期搜索时,idh_hist查询非常慢

时间:2016-08-11 09:23:23

标签: progress-4gl openedge progress-db

我正在尝试编写一个查询,以便通过MFG / PRO发票表'idh_hist'搜索特定的日期范围。添加日期条件时运行速度非常慢。但是当我推迟日期条件时,速度非常快。你能否建议在idh_hist上写一个查询的方法,该查询在条件方面运行得相当快。

以下是我的查询:

for each idh_hist no-lock where idh_domain = "d0002"
                            and idh_due_date = TODAY:

    /* display code here... */

end. 

提前致谢!

数据库索引:

Flags Index Name              Cnt   Field Name
----- ---------------------  ----   ---------------------
      idh_fsm_type             4    + idh_domain
                                    + idh_fsm_type
                                    + idh_nbr
                                    + idh_line

pu    idh_invln                4    + idh_domain
                                    + idh_inv_nbr
                                    + idh_nbr
                                    + idh_line

      idh_part                 4    + idh_domain
                                    + idh_part
                                    + idh_inv_nbr
                                    + idh_line

u     oid_idh_hist             1    + oid_idh_hist 

1 个答案:

答案 0 :(得分:1)

您似乎没有使用idh_due_date的索引。您需要添加这样的索引。

4gl使用规则根据WHERE子句选择索引。最重要的规则是使用具有相等匹配的索引的主要组件。

您显示的查询在idh_domain上只有一个这样的匹配。因此,应用了违规规则。这将导致选择idh_invln索引。

实际上,为了满足您的查询,需要搜索与“idh_domain”字段匹配的所有记录。 (如果您只有一个域,这意味着您正在进行表扫描。)

您可能想在idh_domain和idh_due_date上添加索引。这将是您查询的完美匹配。